一、簡介
二、制定實施方案
三、具體操作過程
四、生成報告
五、測試過程中的風險及規避
零、前言
滲透測試在未得到被測試方授權之前依據某些地區法律規定是違法行為。 這里我們提供的所有滲透測試方法均為(假設為)合法的評估服務,也就是通常所說的道德黑客行為(Ethical hacking),因此我們這里的所有讀者應當都是Ethical Hackers,如果您還不是,那么我希望您到過這里后會成為他們中的一員 ;)
這里,我還想對大家說一些話:滲透測試重在實踐,您需要一顆永不言敗的心和一個有著活躍思維的大腦。不是說您將這一份文檔COPY到您網站上或者保存到本地電腦您就會了,即使您將它打印出來沾點辣椒醬吃了也不行,您一定要根據文檔一步一步練習才行。而且測試重在用腦,千萬別拿上一兩個本文中提到的工具一陣亂搞,我敢保證:互聯網的安全不為因為這樣而更安全。祝您好運。。。
一、簡介
什么叫滲透測試?
滲透測試最簡單直接的解釋就是:完全站在攻擊者角度對目標系統進行的安全性測試過程。
進行滲透測試的目的?
了解當前系統的安全性、了解攻擊者可能利用的途徑。它能夠讓管理人員非常直觀的了解當前系統所面臨的問題。為什么說叫直觀呢?就像Mitnick書里面提到的那樣,安全管理(在這里我們改一下,改成安全評估工作)需要做到面面俱到才算成功,而一位黑客(滲透測試)只要能通過一點進入系統進行破壞,他就算是很成功的了。
滲透測試是否等同于風險評估?
不是,你可以暫時理解成滲透測試屬于風險評估的一部分。事實上,風險評估遠比滲透測試復雜的多,它除滲透測試外還要加上資產識別,風險分析,除此之外,也還包括了人工審查以及后期的優化部分(可選)。
已經進行了安全審查,還需要滲透測試嗎?
如果我對您說:嘿,中國的現有太空理論技術通過計算機演算已經能夠證明中國完全有能力實現宇航員太空漫步了,沒必要再發射神8了。您能接受嗎?
滲透測試是否就是黑盒測試?
否,很多技術人員對這個問題都存在這個錯誤的理解。滲透測試不只是要模擬外部黑客的入侵,同時,防止內部人員的有意識(無意識)攻擊也是很有必要的。這時,安全測試人員可以被告之包括代碼片段來內的有關于系統的一些信息。這時,它就滿足灰盒甚至白盒測試。
滲透測試涉及哪些內容?
技術層面主要包括網絡設備,主機,數據庫,應用系統。另外可以考慮加入社會工程學(入侵的藝術/THE ART OF INTRUSION)。
滲透測試有哪些不足之處?
主要是投入高,風險高。而且必須是專業的Ethical Hackers才能相信輸出的最終結果。
你說的那么好,為什么滲透測試工作在中國開展的不是很火熱呢?
我只能說:會的,一定會的。滲透測試的關鍵在于沒法證明你的測試結果就是完善的。用戶不知道花了錢證明了系統有問題以后,自己的安全等級到了一個什么程序。但是很顯然,用戶是相信一個專業且經驗豐富的安全團隊的,這個在中國問題比較嚴重。在我接觸了一些大型的安全公司進行的一些滲透測試過程來看,測試人員的水平是對不住開的那些價格的,而且從測試過程到結果報表上來看也是不負責的。我估計在三年以后,這種情況會有所改觀,到時一方面安全人員的技術力量有很大程度的改觀,另一方面各企業對滲透測試會有一個比較深刻的理解,也會將其做為一種IT審計的方式加入到開發流程中去。滲透測試的專業化、商業化會越來越成熟。
二、制定實施方案
實施方案應當由測試方與客戶之間進行溝通協商。一開始測試方提供一份簡單的問卷調查了解客戶對測試的基本接收情況。內容包括但不限于如下:
目標系統介紹、重點保護對象及特性。
是否允許數據破壞?
是否允許阻斷業務正常運行?
測試之前是否應當知會相關部門接口人?
接入方式?外網和內網?
測試是發現問題就算成功,還是盡可能的發現多的問題?
滲透過程是否需要考慮社會工程?
。。。
在得到客戶反饋后,由測試方書寫實施方案初稿并提交給客戶,由客戶進行審核。在審核完成后,客戶應當對測試方進行書面委托授權。這里,兩部分文檔分別應當包含如下內容:
實施方案部分:
...
書面委托授權部分:
...
三、具體操作過程
1、信息收集過程
網絡信息收集:
在這一部還不會直接對被測目標進行掃描,應當先從網絡上搜索一些相關信息,包括google Hacking, Whois查詢, DNS等信息(如果考慮進行社會工程學的話,這里還可以相應從郵件列表/新聞組中獲取目標系統中一些邊緣信息如內部員工帳號組成,身份識別方式,郵件聯系地址等)。
1.使用whois查詢目標域名的DNS服務器
2.nslookup
>set type=all
><domain>
>server <ns server>
>set q=all
>ls -d <domain>
涉及的工具包括:Google,Demon,webhosting.info,Apollo,Athena,GHDB.XML,netcraft,seologs 除此之外,我想特別提醒一下使用Googlebot/2.1繞過一些文件的獲取限制。
Google hacking 中常用的一些語法描述
1.搜索指定站點關鍵字site。你可以搜索具體的站點如site:www.nosec.org。使用site:nosec.org可以搜索該域名下的所有子域名的頁面。甚至可以使用site:org.cn來搜索中國政府部門的網站。
2.搜索在URL網址中的關鍵字inurl。比如你想搜索帶參數的站點,你可以嘗試用inurl:asp?id=
3.搜索在網頁標題中的關鍵字intitle。如果你想搜索一些登陸后臺,你可以嘗試使用intitle:"admin login"
目標系統信息收集:
通過上面一步,我們應當可以簡單的描繪出目標系統的網絡結構,如公司網絡所在區域,子公司IP地址分布,VPN接入地址等。這里特別要注意一些比較偏門的HOST名稱地址,如一些backup開頭或者temp開關的域名很可能就是一臺備份服務器,其安全性很可能做的不夠。
從獲取的地址列表中進行系統判斷,了解其組織架構及操作系統使用情況。最常用的方法的是目標所有IP網段掃描。
端口/服務信息收集:
這一部分已經可以開始直接的掃描操作,涉及的工具包括:nmap,thc-amap
1.我最常使用的參數
nmap -sS -p1-10000 -n -P0 -oX filename.xml --open -T5 <ip address>
應用信息收集:httprint,SIPSCAN,smap
這里有必要將SNMP拿出來單獨說一下,因為目前許多運營商、大型企業內部網絡的維護臺通過SNMP進行數據傳輸,大部分情況是使用了默認口令的,撐死改了private口令。這樣,攻擊者可以通過它收集到很多有效信息。snmp-gui,HiliSoft MIB Browser,mibsearch,net-snmp都是一些很好的資源。
2、漏洞掃描
這一步主要針對具體系統目標進行。如通過第一步的信息收集,已經得到了目標系統的IP地址分布及對應的域名,并且我們已經通過一些分析過濾出少許的幾個攻擊目標,這時,我們就可以針對它們進行有針對性的漏洞掃描。這里有幾個方面可以進行:
針對系統層面的工具有:ISS, Nessus, SSS, Retina, 天鏡, 極光
針對WEB應用層面的工具有:AppScan, Acunetix Web Vulnerability Scanner, WebInspect, Nstalker
針對數據庫的工具有:ShadowDatabaseScanner, NGSSQuirreL
針對VOIP方面的工具有:PROTOS c07 sip(在測試中直接用這個工具轟等于找死)以及c07 h225, Sivus, sipsak等。
事實上,每個滲透測試團隊或多或少都會有自己的測試工具包,在漏洞掃描這一塊針對具體應用的工具也比較個性化。
3、漏洞利用
有時候,通過服務/應用掃描后,我們可以跳過漏洞掃描部分,直接到漏洞利用。因為很多情況下我們根據目標服務/應用的版本就可以到一些安全網站上獲取針對該目標系統的漏洞利用代碼,如milw0rm, securityfocus,packetstormsecurity等網站,上面都對應有搜索模塊。實在沒有,我們也可以嘗試在GOOGLE上搜索“應用名稱 exploit”、“應用名稱 vulnerability”等關鍵字。
當然,大部分情況下你都可以不這么麻煩,網絡中有一些工具可供我們使用,最著名的當屬metasploit了,它是一個開源免費的漏洞利用攻擊平臺。其他的多說無益,您就看它從榜上無名到沖進前五(top 100)這一點來說,也能大概了解到它的威力了。除此之外,如果您(您們公司)有足夠的moeny用于購買商用軟件的話,CORE IMPACT是相當值得考慮的,雖然說價格很高,但是它卻是被業界公認在滲透測試方面的泰山北斗,基本上測試全自動。如果您覺得還是接受不了,那么您可以去購買CANVAS,據說有不少0DAY,不過它跟metasploit一樣,是需要手動進行測試的。最后還有一個需要提及一下的Exploitation_Framework,它相當于一個漏洞利用代碼管理工具,方便進行不同語言,不同平臺的利用代碼收集,把它也放在這里是因為它本身也維護了一個exploit庫,大家參考著也能使用。
上面提到的是針對系統進行的,在針對WEB方面,注入工具有NBSI, OWASP SQLiX, SQL Power Injector, sqlDumper, sqlninja, sqlmap, Sqlbftools, priamos, ISR-sqlget***等等。
在針對數據庫方面的工具有:
數據庫 工具列表 Oracle(1521端口): 目前主要存在以下方面的安全問題:
1、TNS監聽程序攻擊(sid信息泄露,停止服務等)
2、默認賬號(default password list)
3、SQL INJECTION(這個與傳統的意思還不太一樣)
4、緩沖區溢出,現在比較少了。 thc-orakel, tnscmd, oscanner, Getsids, TNSLSNR, lsnrcheck, OAT, Checkpwd, orabf MS Sql Server(1433、1434端口) MySQL(3306端口) DB2(523、50000、50001、50002、50003端口) db2utils Informix(1526、1528端口)
在針對Web服務器方面的工具有:
WEB服務器 工具列表 IIS IISPUTSCANNER Tomcat 想起/admin和/manager管理目錄了嗎?另外,目錄列表也是Tomcat服務器中最常見的問題。比如5.*版本中的http://127.0.0.1/;index.jsp
http://www.example.com/foo/"../manager/html
http://www.example.com:8080/examples/servlets/servlet/CookieExample?cookiename=HAHA&cookievalue=%5C%22FOO%3B+Expires%3DThu%2C+1+Jan+2009+00%3A00%3A01+UTC%3B+Path%3D%2F%3B
http://www.example.com:8080/servlets-examples/servlet/CookieExample?cookiename=BLOCKER&cookievalue=%5C%22A%3D%27%3B+Expires%3DThu%2C+1+Jan+2009+00%3A00%3A01+UTC%3B+Path%3D%2Fservlets-examples%2Fservlet+%3B JBOSS jboss的漏洞很少,老版本中8083端口有%符號的漏洞:
GET %. HTTP/1.0可以獲取物理路徑信息,
GET %server.policy HTTP/1.0可以獲取安全策略配置文檔。
你也可以直接訪問GET %org/xxx/lib.class來獲取編譯好的JAVA程序,再使用一些反編譯工具還原源代碼。 Apache Resin http://victim/C:%5C/
http://victim/resin-doc/viewfile/?file=index.jsp
http://victim/resin-doc/viewfile/?contextpath=/otherwebapp&servletpath=&file=WEB-INF/web.xml
http://victim/resin-doc/viewfile/?contextpath=/&servletpath=&file=WEB-INF/classes/com/webapp/app/target.class
http://victim/[path]/[device].[extension]
http://victim/%20.."web-inf
http://victim/%20
http://victim/[path]/%20.xtp WebLogic
Web安全測試主要圍繞幾塊進行:
Information Gathering:也就是一般的信息泄漏,包括異常情況下的路徑泄漏、文件歸檔查找等
Business logic testing:業務邏輯處理攻擊,很多情況下用于進行業務繞過或者欺騙等等
Authentication Testing:有無驗證碼、有無次數限制等,總之就是看能不能暴力破解或者說容不容易通過認證,比較直接的就是“默認口令”或者弱口令了
Session Management Testing:會話管理攻擊在COOKIE攜帶認證信息時最有效
Data Validation Testing:數據驗證最好理解了,就是SQL Injection和Cross Site Script等等
目前網上能夠找到許多能夠用于進行Web測試的工具,根據不同的功能分主要有:
枚舉(Enumeration): DirBuster, http-dir-enum, wget
基于代理測試類工具:paros, webscarab, Burp Suite
針對WebService測試的部分有一些尚不是很成熟的工具,如:wsbang,wschess,wsmap,wsdigger,wsfuzzer
這一部分值得一提的是,很多滲透測試團隊都有著自己的測試工具甚至是0DAY代碼,最常見的是SQL注入工具,現網開發的注入工具(如NBSI等)目前都是針對中小企業或者是個人站點/數據庫進行的,針對大型目標系統使用的一些相對比較偏門的數據庫系統(如INFORMIX,DB2)等,基本上還不涉及或者說還不夠深入。這時各滲透測試團隊就開發了滿足自身使用習慣的測試工具。
在針對無線環境的攻擊有:WifiZoo
4、權限提升
在前面的一些工作中,你或許已經得到了一些控制權限,但是對于進一步攻擊來說卻還是不夠。例如:你可能很容易的能夠獲取Oracle數據庫的訪問權限,或者是得到了UNIX(AIX,HP-UX,SUNOS)的一個基本賬號權限,但是當你想進行進一步的滲透測試的時候問題就來了。你發現你沒有足夠的權限打開一些密碼存儲文件、你沒有辦法安裝一個SNIFFER、你甚至沒有權限執行一些很基本的命令。這時候你自然而然的就會想到權限提升這個途徑了。
目前一些企業對于補丁管理是存在很大一部分問題的,他們可能壓根就沒有想過對一些服務器或者應用進行補丁更新,或者是延時更新。這時候就是滲透測試人員的好機會了。經驗之談:有一般權限的Oracle賬號或者AIX賬號基本上等于root,因為這就是現實生活。
5、密碼破解
有時候,目標系統任何方面的配置都是無懈可擊的,但是并不是說就完全沒辦法進入。最簡單的說,一個缺少密碼完全策略的論證系統就等于你安裝了一個不能關閉的防盜門。很多情況下,一些安全技術研究人員對此不屑一顧,但是無數次的安全事故結果證明,往往破壞力最大的攻擊起源于最小的弱點,例如弱口令、目錄列表、SQL注入繞過論證等等。所以說,對于一些專門的安全技術研究人員來說,這一塊意義不大,但是對于一個ethical hacker來說,這一步驟是有必要而且絕大部分情況下是必須的。;)
目前比較好的網絡密碼暴力破解工具有:thc-hydra,brutus
>hydra.exe -L users.txt -P passwords.txt -o test.txt -s 2121 www.heimian.com ftp
目前網絡中有一種資源被利用的很廣泛,那就是rainbow table技術,說白了也就是一個HASH對應表,有一些網站提供了該種服務,對外宣稱存儲空間大于多少G,像rainbowcrack更是對外宣稱其數據量已經大于1.3T。
針對此種方式對外提供在線服務的有:
網址 描述 rainbowcrack 里面對應了多種加密算法的HASH。 http://gdataonline.com/seekhash.php http://www.milw0rm.com/cracker/info.php http://www.hashchecker.com/?_sls=search_hash http://bokehman.com/cracker/ http://passcracking.ru/ http://www.md5.org.cn http://www.cmd5.com/ 數據量全球第一,如果本站無法破解,那么你只能去拜春哥...
當然,有些單機破解軟件還是必不可少的:Ophcrack,rainbowcrack(國人開發,贊一個),cain,L0phtCrack(破解windows密碼),John the Ripper(破解UNIX/linux)密碼,當然,還少不了一個FindPass...
針對網絡設備的一些默認帳號,你可以查詢http://www.routerpasswords.com/和http://www.phenoelit-us.org/dpl/dpl.html
在滲透測試過程中,一旦有機會接觸一些office文檔,且被加了密的話,那么,rixler是您馬上要去的地方,他們提供的OFFICE密碼套件能在瞬間打開OFFICE文檔(2007中我沒有試過,大家有機會測試的話請給我發一份測試結果說明,謝謝)。看來微軟有理由來個補丁什么的了。對于企業來說,您可以考慮使用鐵卷或者RMS了。
6、日志清除
It is not necessary actually.
7、進一步滲透
攻入了DMZ區一般情況下我們也不會獲取多少用價值的信息。為了進一步鞏固戰果,我們需要進行進一步的內網滲透。到這一步就真的算是無所不用其及。最常用且最有效的方式就是Sniff抓包(可以加上ARP欺騙)。當然,最簡單的你可以翻翻已入侵機器上的一些文件,很可能就包含了你需要的一些連接帳號。比如說你入侵了一臺Web服務器,那么絕大部分情況下你可以在頁面的代碼或者某個配置文件中找到連接數據庫的帳號。你也可以打開一些日志文件看一看。
除此之外,你可以直接回到第二步漏洞掃描來進行。
四、生成報告
報告中應當包含:
薄弱點列表清單(按照嚴重等級排序)
薄弱點詳細描述(利用方法)
解決方法建議
參與人員/測試時間/內網/外網
五、測試過程中的風險及規避
在測試過程中無可避免的可能會發生很多可預見和不可預見的風險,測試方必須提供規避措施以免對系統造成重大的影響。以下一些可供參考:
1. 不執行任何可能引起業務中斷的攻擊(包括資源耗竭型DoS,畸形報文攻擊,數據破壞)。
2. 測試驗證時間放在業務量最小的時間進行。
3. 測試執行前確保相關數據進行備份。
4. 所有測試在執行前和維護人員進行溝通確認。
5. 在測試過程中出現異常情況時立即停止測試并及時恢復系統。
6. 對原始業務系統進行一個完全的鏡像環境,在鏡像環境上進行滲透測試。
參考資料:
大成天下滲透測試服務技術白皮書 v1.4
Penetration Testing Framework
Report Template
http://www.phenoelit.de/dpl/dpl.html
http://snakeoillabs.com/downloads/GHDB.xml
http://www.eccouncil.org/Course-Outline/Ethical%20Hacking%20and%20Countermeasures%20Course.htm
http://www.owasp.org/index.php/OWASP_Testing_Project
http://www.red-database-security.com
http://www.petefinnigan.com
http://www.insomniasec.com/releases/whitepapers-presentations
http://www.isecom.org/osstmm/