發布時間: 2017-06-16 14:25:44
PowerShell是一個巨型的Windows工具箱,它使得Windows管理員能夠自動執行各種任務,如循環日志、部署補丁和管理用戶。無論是特定的Windows管理工作還是與安全相關的任務,PowerShell總有一種方法可是實現。
說到安全,有人可能已經創建了一個PowerShell腳本或是模塊來處理其工作。微軟擁有一個腳本的社區庫,那里提供了處理各種安全事務的腳本,如滲透測試、證書管理、和網絡取證等。鑒于一些預設好的PowerShell能夠減輕Windows管理員的工作負荷,就請隨我一起來看看下面的各個模塊是如何能提高您的Windows系統和網絡安全的吧。
系統加固
一旦進入您的網絡,攻擊者通常需要一些時間來偵察學習網絡的拓撲結構以發現其它的系統,并通過找到額外的認證憑證來跨過網絡去入侵其它的系統。其目標當然是定位最敏感的信息的存儲位置并使之漏出。以下的PowerShell腳本就能使得偵察活動難以執行。
從多臺計算機上將多個用戶從本地管理員組里刪除掉。誠然用戶可能因為一些原因被添加到本地管理員組里。例如一個賬戶可以被IT用于故障診斷的意圖或是為了創建一臺機器。但無論如何在本地管理員組里包括多個用戶卻是一個安全風險,因為攻擊者完全可以竊取這些認證憑證。Remove-LocalAdmins Masive腳本則可以查看所有計算機上的從一個文件中所羅列出的用戶信息,并集中到一個指定的文本文件里,且刪除這些用戶。該腳本需要用一個具有足夠權限的賬戶來運行,以訪問到其它機器上來刪除用戶。
加固SAM并遠程訪問Windows 10。攻擊者可以通過SAM-Remote協議來遠程訪問Windows安全帳戶管理器(SAM),憑借著域服務器,它能了解所有的域和本地用戶組成員以及網絡中路由表等信息。默認情況下任何在網絡中的具有合法身份的用戶可以通過SAMR來遠程訪問SAM。當然Windows 10的年度更新已改為只有管理員是限制訪問的。SAMRi 10允許管理員修改網絡中所有Windows 10和Windows Server 2016系統的遠程SAM的默認訪問權限。請注意,SAMRi10只適用于Windows 10和Windows Server 2016。同樣的改變可以通過Windows 10的1607及其以后版本的組策略來實現,因此該PowerShell模塊僅僅提供了另一種方式來完成相同的任務。
將應用程序添加到微軟增強緩解體驗工具包(EMET)中。EMET不接受文件名通配符,這意味著當一個應用程序的名稱發生更改時EMET就需要更新。管理員使用EMET來保護個人應用程序,并使用Configure_EMET來添加和刪除應用程序到其檢測列表中。不過,該腳本只適用于Windows 7和8。
加固網絡會話枚舉。攻擊者可以使用網絡會話的枚舉來檢索服務器上建立的會話信息,如計算機名稱、IP地址、用戶建立會話的名稱、會話存活的秒數。根據這些信息,攻擊者便可知道給定用戶所登錄過的所有計算機。
默認情況下,任何具有合法身份的用戶都可以執行NetSessionEnum。Net Cease模塊通過移除合法身份的用戶組的執行權限和向特定的會話添加權限來變更誰可以使用NetSessionEnum。Net Cease并不干擾防御人員遠程調用該方法的能力,而互動/服務/批處理的登錄會話仍然能夠本地調用之。
Windows的管理
PowerShell使得管理員能夠更好且更容易的管理控制Windows系統。雖然這種靠“黑掉”注冊表來實現各種操作且會導致更多的問題并非是一個優雅之舉,但PowerShell可以更容易的修改訪問控制列表(ACL),添加或遠程登錄個別主機上的用戶并管理組策略設置。在Windows里,安全的最佳實踐是盡可能使用最小權限帳戶的模式。因此,就算一個會話是盜用,攻擊者也只能禁錮于該用戶的較少特權憑證。而對于需要一些特權訪問的情況,管理員則可以使用“以一個進程運行腳本”的模式來以另一個身份去運行其它的PowerShell腳本。StartScriptAsProcess就能創建一個新的流程并明確告訴操作系統所使用的另一個身份,而不是那個與登錄用戶相關聯的身份。
SHA1證書簽名檢查。證書管理是一項非常復雜的任務,而將SHA-1證書用更安全的替代方案予以更換已經是迫在眉睫的了。該SHA1CertSigCheck模塊將有助于管理員判斷證書是否被SHA-1所簽發。而該腳本的輸出還指明了證書是否是以TLS的方式進行安全的網絡通信或是去簽發了Windows的可執行文件。雖然管理員也能夠查找非根 CA的證書,但該腳本并不告知其是否為公共CA所簽發的證書。由于它只能一次檢查一張證書或可執行程序,而且并不主動發現它們,因此管理員仍然必須先人工找到所有的證書。
文件系統安全Powershell模塊(版本)4.2.3。用Windows PowerShell管理文件和文件夾的權限并不太容易,但NTFSSecurity模塊提供了為NTFS驅動器定制化的cmdlets,例如獲取當前的權限列表、添加和刪除訪問控制項(ACEs)及設置繼承等。還有Windows商店的權限訪問控制項(ACEs)就在自主訪問控制列表(DACL) 之中。目前最新版本4.3.2可在GitHub托管平臺上獲得。
備份和恢復文件夾的訪問控制列表。跟蹤所有訪問控制列表的變化可能會相當棘手。有相當多的腳本聲稱能夠在ACL已被修改時予以顯示,但Track-NTFSChanges卻使用了一個非常簡單的方法。它將整個ACL備份為一個XML文件,并在下一次該腳本運行時會檢查對比當前列表和以前的備份是否有變化。如果有,該模塊有讓管理員恢復舊的權限的功能。不幸的是雖然該腳本可以顯示已被修改的ACL,它不能告知誰導致了該變化。因此管理員仍然必須通過日志挖掘來發現詳細的信息。
捕獵攻擊者
PowerShell不僅僅是一種管理語言,管理員們還可以運用PowerShell來執行正則表達式的模式匹配,以發現偽造的惡意文件、監控網絡、分析日志中的安全事件。例如管理員可以為可疑文件創建一個SHA256密碼散列,并使用Get-VirusTotalReport模塊來查詢VirusTotal服務(一個必需的API密匙)以確定該文件是否為一個已知的惡意軟件樣本。
修改本地管理員組。攻擊者為了其可以執行一系列活動的目標,會在系統上創建一個本地管理員帳戶的。Detect-LocalAdmin腳本定期查詢多臺計算機并比較本地管理員組的用戶列表來發現任何可能的更改。如果找到一個新用戶,該腳本將日志記錄該事件并發送一封電子郵件通知以提醒管理員可能存在的泄漏。
Kerberos黃金票據檢查。黃金票據攻擊發生在當攻擊者擁有了對活動目錄的管理員或當地管理訪問權限后操縱Kerberos票據以獲得未經授權的訪問權限。攻擊者可以執行多種身份驗證的任務或是制造Kerberos票據授予類型的票據(TGT)來為用戶和并不存在服務賬戶創建其它的Kerberos票據。GoldenTicketCheck模塊檢查那些為異常TGT緩存的計算機Kerberos票據,比如那些生命周期并非為默認十個小時的期限。如果一個異常TGT或服務票證被發現,PowerShell控制臺將顯示相關的細節并管道輸出其結果到一個文本文件里。
Get-LogonLocations。攻擊者“尋獵”特權帳戶并試圖登錄到網絡中的其它系統。PowerShell的Get-LogonLocations模塊搜索所有域控制器上與指定用戶相關聯的登錄事件。其輸出可以顯示那些攻擊者所試圖用特權帳戶登錄的所有電腦。該腳本是比較通用的,因為通過被修改,它可以查看到指定電腦,而非所有域控制器以及指定的用戶,而非所有0層賬戶組的成員的不同事件日志。盡管該模塊能運行在所有新的Windows版本(Windows 7到10),但它不支持Windows Server 2003、2008或2012 R2。
腳本化安全
PowerShell使IT能自動化運行一些更為費時或乏味的Windows管理事務。與其它任何從互聯網下載,然后盲目的執行的情況相比,使用這樣能夠處理事務的腳本是非常令人心悅的。你可以在實際運行腳本之前,通過代碼逐步審查以確保你能理解其真正含義。如果某些代碼不合理,你可以在找出其原因的同時加以注釋或尋找另一個替代的代碼。因為可能需要提升特別權限,許多這些腳本會要求你在執行之前進行解禁(unblock)。
當然,您應確保自己已經安裝了PowerShell。PowerShell是被默認安裝在Windows10和Windows 10的年度更新上的。Windows 8和8.1附帶的是PowerShell 4。而在Windows 7上管理員將需要手動安裝PowerShell。那些不太習慣使用PowerShell的管理員應該參考Woody Leonard的指南作為開始。
上一篇: 安裝Linux Mint Xfce 18.x后,你要做的八件事
下一篇: 五步完成Linux賬號的安全管理