Windows帳號角色權限的安全檢查分析以及PowerShell的使用介紹
一、Windows帳號角色權限的安全檢查分析
1.net user:檢查用戶情況;
net user X:檢查某個特定的用戶X。
2.lusrmgr.msc --> local user manger縮寫:本地用戶和組管理器。
whoami /user :查看當前的用戶信息。
4.net localgroup :檢查用戶組情況;
net localgroup X:查看X用戶組的情況。
5.eventvwr.msc:日志查看器。
6.權限檢查的幾個工具:SubInACL(查看更多:https://www.microsoft.com/en-us/download/details.aspx?id=23510)、accesschk64、ProcessExplorer:procexp、ProcessMonitor、ProcessMonitor、icacls,Windows自帶的文件/進程權限檢查:icacls "C:\Windows\System32\winlogon.exe"
secpol.msc:用戶權限分配檢查。
二、Windows PowerShell的使用介紹
1.PowerShell簡介:
<1>.PowerShell(Include:PowerShell Core)是Windows任務自動化和配置管理的命令行腳本環境,有.NET Framework、.NET Core;是構建命令行界面殼層(Comand Shell Line)相關腳本語言組成;最初只是Windows組
件,后來,2016年8月18日開源並跨平台支持。
<2>.PowerShell管理任務通常由cmdlets(command-lets,小命令 )執行,是執行特定操作的專用.NET類。可將cmdlet集合至腳本、可執行文件中,或通過常規.NET類、WMI/COM對象實例化。面向對象、完全支持對象的強大
Shell管理工具。
<3>.當前PowerShell有4個版本,分別為:v1,v2、v3、v4、v5:
Window 7 或 Server 2008,默認內置v2;
Windows 8 或 Server 2012,內置v3;
Windows 8.1 或 Server 2012 R2,內置v4;
Windows 10 或 Server 2016/R2,內置v5。
<4>.文件擴展名:
.ps1,腳本文件;
.ps1xml,XML文檔;
.psc1,控制台文件;
.psd1,數據文件;
.psm1,腳本模塊;
.pssc,會話配置文件;
.cdxml ,Cmdlet定義的XML文檔。
<5>.官方參考資料:
https://docs.microsoft.com/zh-cn/powershell/
<6>.獲取源代碼和安裝包:
https://github.com/PowerShell/PowerShell
2.PowerShell攻擊頻頻:
<1>.以PowerShell作為攻擊平台的概念,首次在2010年Dave Kennedy & Josh Kelley的Def Con18演講,演示了PowerShell編寫的綁定和反向shell進行攻擊。
2012 年,Matt Graeber開發了PowerSploit並發表博文,從此,PowerShell利用率大幅提升!
2013年,Mimikatz開始支持PowerShell調用(aka Invoke-Mimikatz)。PowerShell徹底流行起來!
成熟的PowerShell工具,如:Nishang、PowerSploit、Empire。
Empire,可實現無需powershell.exe就可運行PowerShell代理功能,快速部署后期漏洞利用模塊,從Key Logger到Mimikatz,且能夠躲避多種安全檢測。
<2>.使用過PowerShell攻擊技術的APT組織:
“海蓮花”(APT-TOCS);
“白象”(White Elephant);
“方程式”(Equation);
“綠斑”(GreenSpot);
Fub7;
APT-C-01:針對中國政務/科技/教育/國防等機構。
PowerShell開源,跨平台支持,攻擊將會越來越常見!
<3>.為什么PowerShell會成為黑客攻擊的最愛?
對Network Socket訪問簡單、高效、直接;
可動態地在內存組裝惡意的二進制文件,直接運行在內存,殺毒軟件極難檢測;PowerShell結合 .NET 實施“無文件”攻擊(攻擊代碼下載、執行均在內存實現,無需在系統創建攻擊文件,可有效逃避安全軟件檢測攔截),混
合在正常網絡流量,難以追蹤。攻擊行為便捷、有效、隱蔽;
直接訪問Win32應用程序編程接口(API);
使用Windows管理工具的簡單接口(WMI);
強大的腳本環境;
動態的調用運行時間方法;
輕而易舉地訪問密碼庫,例如:IPSec、哈希算法;
能夠鈎住托管代碼;
完全綁定組件對象模型(COM)。
<4>.PowerShell危害分析:
對企業而言,服務器被攻擊,拉取PowerShell進程,遠程執行惡意代碼,多數情況下是由於企業自身安全意識不足防御有破綻,對爆出的系統漏洞、應用程序漏洞未及時修復,導致服務器被入侵,影響企業信息安全。
統計表明,攻擊者通常利用高危漏洞進行攻擊:永恆之藍、Weblogic反序列化、MS17-010、Struts2系列漏洞,備受青睞!

弱口令”也給企業帶來約51%的安全隱患。該漏洞攻擊成本低,結合社工、釣魚方式,利用惡意郵件( Foxmail),結合Office宏執行惡意代碼,實施深層次攻擊。
統計表明,攻擊者入侵成功后,最喜歡投放:挖礦木馬、勒索病毒。都與數字貨幣直接相關。竊密木馬、遠控木馬,實施對目標企業定向攻擊。給企業帶來嚴重安全威脅!

3.PowerShell開發工具:
<1>.Windows系統自帶的工具:PowerShell ISE;
啟動方式:輸入powershell,進入powershell界面,輸入ise即可打開。
<2>.其他工具:PowerShell Studio & Visual Studio;
查看更多:https://www.sapien.com/software/powershell_studio
4.PowerShell腳本調用的方法:
如果腳本是直接寫的代碼而不是只定義了函數,則直接執行腳本.script.ps1即可;
如果載入了函數,則需要:+空格+.script.ps1;
或使用Import-Module .script.ps1,直接使用有腳本的函數。
5.PowerShell執行的可選參數:
PowerShell[.exe] [-PSConsoleFile <file> | -Version <version>] [-EncodedCommand <Base64EncodedCommand>] [-ExecutionPolicy<ExecutionPolicy>] [-File <filePath> <args>] [-InputFormat {Text | XML}] [-NoExit] [-NoLogo] [-
NonInteractive] [-NoProfile] [-OutputFormat {Text | XML}] [-Sta] [-WindowStyle <style>] [-Command { - | <script-block> [-args <arg-array>] | <string>[<CommandParameters>] } ]PowerShell[.exe] -Help | -? | /?
<1>.-Command,需要執行的代碼;
<2>.-ExecutionPolicy,設置默認的執行策略,一般使用Bypass;
<3>.-EncodedCommand,執行Base64代碼;
<4>.-File,需要執行的腳本名;
<5>.-NoExit,執行完成命令之后不會立即退PS會話;
<6>.-NoLogo,不輸出PS的Banner信息;
<7>.-Noninteractive,不開啟交互式的會話;
<8>.-NoProfile,不使用當前用戶使用的配置文件;
<9>.-Sta,以單線程模式啟動PS;
<10>.-WindowStyle,設置Powershell的執行窗口:Normal、Minimized、Maximized、Hidden;
<11>.-Version,設置用什么版本去執行代碼。
Powershell混淆框架nvoke-Obfuscation,下載地址:https://github.com/danielbohannon/Invoke-Obfuscation
6.PowerShell執行策略:
PowerShell提供:Restricted、AllSigned、RemoteSigned、Unrestricted、Bypass、Undefined,六種執行策略。
<1>.Restricted:
受限制。可執行單個命令。不能執行腳本。Windows 8/8.1/10、Server 2012默認策略,執行會報錯。
可通過:Set-ExecutionPolicy -ExecutionPolicy Bypass,即可設置策略為Bypass,即可執行腳本。
Get-ExecutionPolicy,獲取當前的執行策略:
<2>.AllSigned::
允許執行所有具有數字簽名的腳本。
<3>.RemoteSigned:
執行從網上下載的腳本,需要腳本具備數字簽名,否則,腳本運行失敗。
如果在本地創建的腳本,可直接執行,不要求數字簽名。
<4>.Unrestricted:
比較寬容的策略,允許運行未簽名的腳本。從網上下載的腳本,運行前安全提示,需確認是否執行。
<5>.Bypass:
腳本執行不設任何限制,任何腳本都可執行,並且不會有安全提示。最寬松!
<6>:Undefined:
沒有設置腳本策略。當然,此時會發生繼承或應用默認的腳本策略。
7.PowerShell的語法:
變量、數組、哈希表(Hash table)、條件判斷、循環語句、函數、對象、
8.PowerShell命令舉例:
獲取所有命令:Get-Command;
停止所有當前運行中的以"p"字符開頭命名的程序:get-process p* | stop-process;
停止所有當前運行中的所有使用大於1000MB存儲器的程序:get-process | where { $_.WS -gt 1000MB } | stop-process;
計算一個目錄下文件內的字節大小:get-childitem | measure-object -property length -sum;
等待一個叫做"notepad"的程序運行結束:
$processToWatch = get-process notepad;
$processToWatch.WaitForExit();
把"$UserProfile"設置成數值"UserProfile"的環境變量:$UserProfile = $env:UserProfile;
9.PoshC2:
基於PowerShell和C#的命令控制工具-PoshC2,不僅實現了各種各樣攻擊技術,還能夠繞過目標主機中部署的各種安全檢查。
https://github.com/nettitude/PoshC2
