情報收集與外網打點
因為起晚了..第一個議題沒聽着,有點遺憾,補張圖
基礎設施架構設計部署
普通架構:紅隊人員--》teamserver cs--》目標機 缺點:功能未分離、無潛伏通道、回連日志多、靈活性較低
演進架構:DNS/HTTP/HTTPS分離server tips:1~2cpu 2G內存 10G硬盤,回連數不超過5台,潛伏通道(根據實際目標環境優先)
完整架構: 域名和IP(VPS)teamserver(CS)前置機(redictor) CS -》teamservers 1/2/3/... 前置層(SMTP/PAYLOAD/C2/隱蔽C2)
- 選擇域名
- 搶注過期域名 expireddomains.net DELETE DOMAIN
- tips1: 不要包含世界大廠和殺毒廠商相關的域名,以及和目標相關的域名
- tips2:注冊目標相關區域常見的域名,記得開隱私保護
- 其他:www.freshdrop.com www.domcop.com
- tips3:檢查域名是否被分類,金融、醫療、電商、航空、旅游 great
- tips4:去VT、微步檢查,域名是否被標黑
- tips5:舉報濫用規則仔細閱讀(freenom 慎用)
- 培養域名(養號)
- 搭建正常域名,提交至各安全廠商給站點分類
- tips1:把域名A記錄解析到大廠ip,使用時候再解析到C2,不用時候解析回大廠ip
- tips2:VT 自評, alex 自評
- 域名解析檢測
- 域名分類檢測
- domaincheck:
- IP檢測
- 外網IP,通過情報站看是否被標黑
- 使用CDN隱藏真實IP(部分安全廠商會攔截CDN IP)
- 借雞生蛋,
- subdomain takeover:高信譽域名A解析B -》
- 高信譽肉雞做前置轉發
- C2工具
- CS 3.14
- 自定義流量特征:DNS/HTTP/HTTPS/SMB和TCP
- Payload加載流程:shellcode/Loader/Stageless/beacon
- DNS:如果用到dns通道默認參數必須修改(容易被設備檢測),不要用DNS做數據通道
- HTTP(S):不要在uri中的文件后綴設置js、css等靜態文件,效果:付費證書>免費證書>自簽名證書 (Let's Encrypt 免費 3個月過期,開自動續)
- CS 3.14
- Redirector
- DNS socat|iptables|ssh(tmux和screen選一個)
- Apache|Nginx
- Tips:
- 建議使用多個判斷過來請求,拒絕使用默認uri,對抗全網C2掃描
- 僅允許目標相關IP訪問,對抗雲沙盒
- 限定訪問時間段,只在某個時間段請求payload
- 不要把非payload的uri重定向到google等高信譽域名
- 建議:在www.aaa.com搭建來養域名,使用c2.aaa.com的二級域名做C2
- Domain Fronting(隱藏IP、域名的方式)
- Google App Engine| Amazon |Azure|Aliyun CDN
- 可見層:DNS、TLS
- 不可見層:HTTPS
- URL(高信譽) SNI(高信譽) HOST(C2)
- https://github.com/vysecurity/DomainFrontingLists
- 代替方案:HTTP pipelining( >http 1.1 )
- 和 domain fronting 效果相同
- 利用同一個tcp連接發送不同的host的http包
- tips:good domain + bad domain 包一層同時發過去
- 第三方服務用作C2
- Office365、Pastebin、Slack、Facebook、Dropbox、Gmail、Twitter..
- 需要硬編碼到第三方服務
- 郵件釣魚(SMTP)
- 域名:同C2域名選擇
- 高信譽的郵件發送者:Mailchimp、Sendgrid
- 正確配置SPF、DKIM\DMARC
- SSL證書
- 發送時間和頻率
- 一鍵部署
- 釣魚郵件框架:Gophish (https://github.com/gophish/gophish)
- 隱蔽性和安全性
- 權限最小化:使用iptalbes限定組件通訊,SSH進行端口轉發
- Teamserver:限制端口只能本地訪問,限制beacon監聽端口只能redirector訪問
- Tips:VPS容易被GFW攔截?
- 解決方案:V*2r a y + Nginx + CLoudflare + Freenom+ Websocket 搭建代理
- 基礎設施監控系統
- 記錄完整日志,設置告警
- 自動化部署 LuWu(https://github.com/QAX-A-Team/LuWu)
- 日志中心
郵件釣魚之前期信息收集與偵查
- 面臨的技術挑戰:
- 郵件網關 mail gateway
- 瀏覽器
- EDR、IDS
- Mail Gateway
- ANTI-SPAM
- SPF
- DKIM
- 新注冊域名
- 生僻域名后綴
- 敏感關鍵字
- 特性:
- 郵件退信默認開啟
- MTA默認不開啟 Recipient Validation
- 結論:當我們發送一封釣魚郵件給一個不存在的郵箱賬戶時,如果能收到NDR,證明釣魚郵件通過了郵件網關安全審查(BACKSCATTER ATTACK)
- BYPASS ANTI-SPAM
- 通過上述結論,探測,fuzzing ANTI-SPAM 引擎規則
- 穩定觸發NDR的辦法:
- 正文大於10M
- 收件人超過5000個
- BYPASS ANTI-MALWARE
- NDR
- ANTI-SPAM
- 總結
-
釣魚樣本制作
- 釣魚郵件類型
- 惡意的chm文檔:利用easy,但目前比較難過殺軟,免殺效果差
- 帶有惡意宏代碼的office文檔:易於混淆(結合圖片模糊之類),但需要手動開宏,進程鏈可疑
- 白加黑釣魚:利用帶簽名的白程序,通過DLL劫持的方案加載惡意DLL;比較容易過AV,但需要解壓執行
- LNK文件釣魚:鏈接對象是Powershell,進程鏈完善
- PPT釣魚樣本:PPT超鏈接,彈出“安全聲明”,不用啟動宏,但必須全屏播放,啟用才執行;不推薦使用
- 漏洞利用的釣魚郵件:效率高,同樣成本也高
- 寫工具自動化生成惡意lnk,關鍵函數:
- IShellLink::SetIconLocation()
- IShellLink::SetShowCmd() 窗口顯示
- IShellLink::SetArguments()
- IShellLink::SetPath()
- ...
- LNK釣魚郵件制作
- 釣魚簡歷的編寫:內容可選浮誇,讓HR打開看完后大概率刪除,防止提給技術人員
- LNK圖標的顯示:改成各個系統都能默認顯示的通用圖標
- 如何隱藏行為:SetShowCmd() 最小化窗口
- Word文檔存放:
- 聯網下載Word文檔
- (New-Object System.Net.WebClient).DownloadFile(url, file_path);
- 數據還原引擎
- 協議內容還原:tcp、http、smtp
- 文件內容還原:office、pdf、zip
- 加殼程序還原:upx
- 加密算法數據還原:base64
- 本地釋放Word文檔
- 將Word塞到COMMAND_LINE_ARGUMENTS
- ARGUMENT用於LNK中存儲命令行參數
- StringData結構,CountCharacters
- IShellLink::SetArguments()
- 塞入數據的最大值是 explorer.exe 對命令行參數長度的限制
- 實測得出 0x7FC2(31KB)
- 將Word塞到lnk文件的尾部(推薦使用)
- 尾部可以追加任意大小的word、PE、PowerShell
- select -last 1 定位到最后一個對象,以“\n”划分對象
- select -index 1 也可以
- 將Word塞到COMMAND_LINE_ARGUMENTS
- 聯網下載Word文檔
- 殺軟對抗
- 短文件名 POWERS~1.EXE
- 代碼混淆 參考賽門鐵克的paper
- 安全類進程檢測
- 虛擬機-取證工具-殺軟檢測-調試器
- 常規手法
- 進程名檢測
- 窗口標題檢測
- 新姿勢
- 遍歷進程,獲取進程對應的版權信息,與黑名單列表比對
- 優點:升級版本也不變,通用
- 如何根據PID獲取進程的全路徑:ProcessExplorer
- x86不太可行,x64可以
- 繞過PCHunter 0RING hook
- 檢測后行為,通知攻擊者,及時善后處理
內網橫向移動
- 內網偵查
- 經典主被動內網偵查方式
- 主動掃描
- 設備資產識別
- 可用服務采集
- 腳本檢測
- 被動搜集
- 監聽廣播消息
- 雷區警示
- 風險面:Network ACL封鎖、受控主機HIDS、HoneyPot、NIDS
- 方法對比
- 主動掃描
- 經典主被動內網偵查方式
- 域內信息偵查 * 類域 * *nix * Windows AD
- 定位域控(域內主機)
- 時間服務器
- net time /domain
- w32tm /query
- DNS服務器
- Get-DnsClientServerAddress 查詢本機 DNS SERVER 設置
- 向DNS server 查詢 Domain Name A記錄對應地址
- 域控定位器
- DC Locator Process
- 產生DNS查詢,沿用DC Locator的機制很安全
- Kerberos認證,KDC
- GC
- 查詢工具
- nltest 提取域控信息的過程
- net
- dsquery 通過對LDAP進行查詢
- dsquery/ADSISearcher使用明文的LDAP協議,容易被IDS捕獲
- 時間服務器
- 定位域控(域外主機)
- DNS排查
- Scan UDP/53
- Query DNS FQDN from DNS
- Query Locators from DNS
- LDAP(S)& GC(S)
- 掃描端口,利用特性篩查域名
- 匿名讀取部分LDAP元數據
- 讀取LDAP證書信息
- GC服務 查詢 TCP/3268 TCP/3269
- 防御:可以關閉匿名綁定
- 查詢LDAP(S)服務
- ADexplorer:GUI,一些cmdlet
- Get-ADUser
- Powerview:大量cmdlet
- Kerberos
- AS-REQ & AS-REP
- KDC TGT票據
- 基於AS協議的用戶枚舉
- KERBEROSUSERENUM(a-team github)
- MSF模塊
- ASREPROAST
- Session Key,使用用戶的NTHASH加密
- John/HashCat 可以進行離線破解
- SPN(Service Principal Name)域對象的屬性,對象是機器/用戶,必須設置
- TGS-REQ & TGS-REP
- 服務票據
- Service Ticket
- 結論:普通域賬號申請服務票據后可以對賬號離線破解
- KERBEROAST攻擊(基於上述結論)
- Rubeus.exe
- PowerView
- HUNT DOMAIN ADMIN
- 特定用戶登錄會話
- 遠程會話枚舉
- NetSessionEnum(SMB會話)
- NetWkstaUserEnum(交互登錄會話)新版本系統需要 admin privilige
- 遠程用戶枚舉
- 場景:一些同域管理賬號同名的本地賬號可能是同一人創建
- SAMR 查詢組和成員信息(注:Win 10后沒有admin無法枚舉)
- LSARPC 查詢SID相關
- 遠程登錄枚舉
- 交互式登陸:主要指Console和RDP登陸的方式
- 遠程會話枚舉
- 獲取主機權限:Vul RBCD & RPRN
- 提取遺留的憑據: Powerview Mimikatz
- 得到用戶權限
- 特定用戶登錄會話
- DNS排查
- 定位域控(域內主機)
- 橫向移動
- MS-RPC
- WMI:基於DCOM TCP/135 明文傳輸
- PSEXEC:(tips:使用impacket工具 psexec.py 區別在於目標支持SMB3.0默認開啟加密)
- 遠程計划任務
- DCOM:遠程調用的COM組件 TCP/445 + Random port dcomexec.py
- Kerberos委派
- 概念:是一種讓服務有能力以來訪用戶身份訪問其他服務的認證機制
- 無限制委派:default設置僅域控可以無限制委派
- S4U2SELF
- PRINTER BUG:Printer Spooler服務SSRF
- 無限制委派+S4U2SELF+PRINTER 任意域控
- 約束委派
- S4U2PROXY
- 基於資源的委派(RBCD) 目前殺傷力最大的委派
- 繼承S4U2SELF、S4U2PROXY
- MS-RPC
- 域權限維持
- 主機權限維持(常見類型,不展開)
- 域權限維持
- SPN
- 針對賬戶進行,參考前面
- 黃金票據
- 用krbtgt加密TGT,TGT加密使用該賬戶的key作為密鑰
- 使用默認參數創建的金票過期時間很長,mimikatz
- DCSync拉取域內賬戶的hash/key
- 檢測點:
- krbtgt key,修改krbtgt密碼兩次,分析4769日志
- 日志分析
- IDS規則,過期時間,算法等
- 白銀票據
- SRVS的相關key加密
- 檢測點:
- PAC信息驗證
- 受限委派
- RBCD
- 域組策略
- LAPS
- SPN
文件感染與橫向移動
- 文件感染
- 意義
- 場景
- 公司軟件庫供應鏈,類似“驅動人生”
- 感染遠程共享文件
- 外界設備感染,如U盤、移動硬盤
- 3389掛載盤到服務器
- 郵件感染,插入惡意宏
- 流量劫持,感染傳輸中的文件
- 方式
- PE感染
- LNK感染
- Office感染
- 常規PE感染
- 給exe添加一個導入函數,DllMain中寫惡意代碼,工具StudyPE
- 把惡意代碼插入到PE中,修改OEP,重建PE
- OEP內某處跳轉到惡意代碼
- 修改OEP指向惡意代碼
- 對抗思路
- DLL加載
- OEP jump
- 利用TLS(線程局部存儲)回調
- TLS感染
- TLS回調,反調試;把惡意代碼放在TLS,不需要修改OEP
- TLS數據結構
- TLS感染總體流程:搜尋節間隙 - 修改錄數據目 - 構建TLS目錄 TLS回調函數 - 重建PE - 惡意文件釋放
- LNK文件
- 圖標如何保持不變?
- IShellLink::SetIconLocation()把exe設置為當前lnk的圖標
- 惡意代碼正常拉起原程序
- 借助rundll32.exe
- 場景:權限維持、橫向移動
- 圖標如何保持不變?
- Office文件感染
- .docx .docm(宏文件) 可以改為 .doc
- 目標:把.docx轉換為帶惡意宏的.docm或.doc
- 殺軟對抗
- 修改文件關聯
- .docm 改為.doc,對抗針對后綴.docm 的檢測
- 修改宏關聯文件,對抗依賴文件名or類型檢測
- 修改文件關聯