前幾天,有黑客《入侵了英國間諜軟件公司Gamma》。本文翻譯自黑客自己公布的入侵指南。詳細的介紹了從信息收集,到發現目標站點,以及進行源碼審計,繞過waf注入,嘗試提權服務器的整個過程。
我寫這篇文章不是為了吹噓自己有多牛逼,使用了多高深的技術去搞定Gamma。我只是想揭開黑客技術神秘的面紗,告訴人們黑客技術很普通,你也可以利用黑客技術去反抗這個世界上那些見不得人的事。如果你沒有任何編程或者hacking的經驗,那些下面的文章可能會看起來像天書一樣。沒有關系,文章最后的參考資料會幫助你慢慢開始。相信我,一旦你有了一些基礎之后就會發現hacking這事比信息自由法案的申請簡單多了。(filing a FOIA request)。
入侵是非法的,所以需要一些基本的措施來保護自己。
1,使用Truecrypt 7.1a制作一個隱藏的加密分區
2,在這個加密分區上安裝Whonix系統
3,(可選的)盡管使用Whonix系統,所有的流量都會經過Tor,已經很足夠了。但是最好還是不要用自己名字或者地址申請的網絡接入點。使用cantenna,aircrack和reaver可以方便的破解無線,接入網絡。
只要你遵守一些常識,比如永遠不要在Whonix系統之后做hacking相關的事,也不要在Whonix系統中做一些自己日常使用的操作,跟其他黑客聊天的時候不要透漏自己真實生活的信息,也不要跟身邊的朋友吹噓自己非法入侵的經歷。那么你就可以基本不用擔心被追蹤的問題了。
注意:我并不推薦直接通過Tor進行hacking。對于瀏覽器來說使用Tor是很方便的。但是對于nmap,sqlmap,nikto之類的黑客工具,需要發送成千上萬的請求,通過Tor使用就會非常慢。更不用說有時候你需要一個公網IP來接受反彈shell了。我推薦使用黑來的服務器或者使用比特比購買的VPS來進行hacking。然后你跟服務器或者VPS的連接使用Tor。這樣就只有很少的命令行的流量通過Tor。速度會快很多。
一般我會不斷使用fierce,whois和反向whois查詢來找到一個組織所有相關的域名和ip。拿Blackwater為例。我們知道他的主頁是academi.com。使用fierce.py -dns academi.com查詢它的子域名:
67.238.84.228 email.academi.com
67.238.84.242 extranet.academi.com
67.238.84.240 mail.academi.com
67.238.84.230 secure.academi.com
67.238.84.227 vault.academi.com
54.243.51.249 www.academi.com
然后通過whois查詢找到www.academi.com托管在亞馬遜云上。其他域名的ip也在下面的段內。
NetRange: 67.238.84.224 – 67.238.84.255
CIDR: 67.238.84.224/27
CustName: Blackwater USA
Address: 850 Puddin Ridge Rd
對academi.com的whois查詢顯示也是注冊到了上面顯示的相同地址。我們可以使用這個地址作為特征進行反向whois查詢。我目前知道的反向whois查詢都是要花錢的。所以采用替代的方式,用google搜索如下關鍵詞:
"850 Puddin Ridge Rd" inurl:ip-address-lookup
"850 Puddin Ridge Rd" inurl:domaintools
再使用fierce.pl -range參數反查找到的ip段對應的域名。和-dns參數查找新的子域名和ip地址。之后再對結果的域名進行whois查詢,如此反復幾次知道找到該組織相關的各種信息。
同時google這個組織和訪問他們的網站也是收集信息的方式。比如在academi.com上,發現了到一下一些網站的連接:
54.236.143.203 careers.academi.com
67.132.195.12 academiproshop.com
67.238.84.236 te.academi.com
67.238.84.238 property.academi.com
67.238.84.241 teams.academi.com
如果在進行一下whois查詢的話會發現,academiproshop.com看起來并不是BlackWater管理的,所以把他從我們的感興趣的名單上去掉。
在我黑掉finfisher的過程中,找到存在漏洞的站點finsupport.finfisher.com的過程也是一樣。在對finfisher.com進行whois查詢,發現注冊名字是"FinFisher GmbH",然后google "FinFisher GmbH" inurl:domaintools 發現一個gamma-international.de域名。當訪問gamma-international.de的時候,跳轉到了這次的目標:finsupport.finfisher.com。
現在你已經大概知道我是如何發現目標的。這真的是最重要的一個環節。你發現的攻擊面越多,就越可能找到漏洞。
使用nmap掃描掃描發現的所有IP段,找到所有開放的服務。除了標準端口掃描,不要忘記掃描SNMP。之后對于發現的每一個服務進行如下的思考:
1,這些服務有沒有泄露敏感的信息。有些公司會覺得一些URL或者ip是外人不知道的,就對這些服務沒有進行認證。比如fierce可能發現一個git開頭的子域名。而你可以通過git.companyname.come/gitweb/來瀏覽該公司的源碼。
2,有沒有嚴重的配置錯誤。有時候他們可能會開放一些ftp的匿名登陸。甚至匿名登陸有寫權限。一些數據庫的管理員賬號為空?;蛘咭恍┣度胧皆O備(VOIP boxes, IP Cameras, routers etc)保留了制造商使用的默認密碼。
3,提供該服務的軟件是否有公開利用的exploit。
對于web服務,我們需要單獨討論。對于任何一個web服務,包括nmap找到的那些開放在不常見端口的web服務,我通常都會進行下面一番工作。
1,瀏覽器訪問看一下。尤其是fierce發現的一些看起來不應該對外開放的子域名。比如test.company.com或者dev.company.com。通常你都會發現一些有趣的內容。
2,使用nikto掃描。它會檢查類似于webserver/.svn/,webserver/backup/,webserver/phpinfo.php和其他數千種常見的安全問題。
3,識別網站使用的各種軟件。使用WhatWeb的效果很好。
4,根據網站運行的軟件使用更具針對性的工具,比如wpscan,cms-explorer,joomscan。首先分析所有的服務,查看是否有錯誤的配置,已公開的漏洞和其他簡單的入侵方式,如果沒有的話下一步就要嘗試去挖掘針對性的漏洞。
5,自己編碼的web程序比廣泛使用的項目更容易出現漏洞。我一般使用ZAP的自動測試結合一些手動測試來進行漏洞挖掘。
6,對于那些使用通用程序的網站,可以弄一份網站程序自己分析。如果不是開源軟件的話,可以考慮買一份或者利用google找到運行者相同程序的網站,找一個容易黑掉的從中弄一份網站源碼。
對于finsupport.finfisher.com,我經歷的過程大致如下:
運行nikto開始掃描,同時訪問網站,只看到一個登陸框,快速測試了一下登陸框是否存在sql注入,沒有發現問題。然后運行whatweb,看看能不能識別出網站運行的程序。不幸的是whatweb沒有識別出來。所以下一個問題我需要解決的就是這是一個自己編碼的網站還是通用程序。我查看頁面源碼,想找個獨一無二的連接去google搜一下。我找到了
Scripts/scripts.js.php
然后搜索:
allinurl:"Scripts/scripts.js.php"
找到了幾個運行了相同軟件的網站??雌饋矶际且粋€小型的公司制作的。每一個網站都是單獨設計的,但是公用了很多代碼。所以我黑了幾個網站,得到了這個小公司開發的程序源碼。寫到這里我幾乎可以想象親愛的記者朋友會在新聞中寫到:這是一次預謀已久的網絡攻擊,為了攻陷Gamma,黑客首先黑掉了一個網站設計公司。但是事實上我只是花了幾分鐘而已。google allinurl:"Scripts/scripts.js.php"發現的網站,嘗試第一個參數就發現SQL注入,只是因為開了apache modsecurity。我使用了sqlmap的tamper參數來繞過waf。具體參數是
–tamper='tamper/modsecurityversioned.py'
。然后獲取到管理員登陸密碼,登陸后臺上傳了個php shell。(后臺對上傳文件的類型判斷是在客戶端做的)。然后就直接下載了網站源碼。
對代碼進行了一番審計發現,這個程序可以成得上是Damn VulnerableWeb App 2.0了。包括了sql注入,LFI,上傳,未授權訪問(未登錄訪問管理頁面的時候會使用location header來跳轉到登陸頁,只要使用交互式代理去掉location跳轉,就可以直接訪問管理頁面了)等漏洞類型。
回到finsupport的網站,由于默認管理后臺/BackOffice/返回403禁止訪問,進行LFI嘗試的時候也遇到一些問題,所以最后又轉向了利用SQL注入(反正有足夠多的漏洞可以選)。所有這個公司開發的其他網站都有一個存在注入點的print.php文件。簡單嘗試:
https://finsupport.finfisher.com/GGI/Home/print.php?id=1 and 1=1
https://finsupport.finfisher.com/GGI/Home/print.php?id=1 and 2=1
發現finsupport也存在這個漏洞,而且數據庫賬號是管理員權限。很可惜的網站開啟了魔術引號,所以不能直接INTO OUTFILE寫shell。但是我可以讀取到網站的源碼了。通過不斷的尋找include和require的文件,最終下載到了finsupport整站的源碼。通過對代碼審計,發現用戶可以在提交ticket的時候上傳附件,而后臺并沒有對附件類型進行檢查。所以我通過SQL注入得到一個普通用戶的賬號,然后上傳了一個shell。進入到了finsupport的服務器。
< got r00t? >
———–
^__^
(oo)\_______
(__) )/
||—-w |
|| ||
^^^^^^^^^^^^^^^^
基本你遇到的超過50%的linux服務器都可以使用Linux_Exploit_Suggester和unix-privesc-check這兩個腳本進行提權。finsupport服務器是最新版的Debian。不過unix-privesc-check返回了如下的信息:
WARNING: /etc/cron.hourly/mgmtlicensestatus is run by cron as root. The user
www-data can write to /etc/cron.hourly/mgmtlicensestatus
WARNING: /etc/cron.hourly/webalizer is run by cron as root. The user www-data
can write to /etc/cron.hourly/webalizer
所以我在/etc/cron.hourly/webalizer添加下面的提權命令:
chown root:root /path/to/my_setuid_shell
chmod 04755 /path/to/my_setuid_shell
等了一個小時,發現沒有反應。分析了發現cron進程雖然存在,但是并不會運行任何cron的任務。進了webalizer的目錄看了一下從上個月開始狀態就沒更新過了。更新了時區之后,有時候cron會在錯誤的時間執行或者干脆就不執行了。所以更新了時區之后一定要要重啟cron進程。ls -l /etc/localtime發現,6月6號的時候系統更新過時區。同一時間,webalizer也停止記錄狀態??磥磉@就是問題所在了。不過對于這臺服務器來說就是用作web server。我已經獲得了所有感興趣的東西,對于root也就沒有那么在意了。接下來繼續內網的滲透。
下一步就是查看下已經被控制的主機所在的網絡環境。這個跟一開始的掃描和利用環節很像,只是現在繞過了防火墻,可以發現更多有趣的服務。這時候上傳一個nmap用來掃描是非常有效果的。尤其是nfs-*和smb-*系列的nmap 腳本非常有效果。
一旦你進入了他們的網絡,就可以真正做一些有趣的事情了。盡情的發揮你的想象。雖然我寫作此文的初衷是為了那些潛在的爆料者,但是不要把自己局限在獲得秘密文檔上。我黑掉Gamma的最初計劃是這樣的:
1,黑掉Gamma,獲得finSpy的服務端軟件
2,尋找FinSpy服務端的漏洞
3,掃描互聯網,尋找FinSpy的C&C服務器,然后黑掉他們
4,揪出使用FinSpy的幕后黑手
5,使用控制的C&C服務器在所有感染FinSpy的機器上運行一個小程序,告訴該機器的主人,是誰在背后監控他們。
6,使用C&C服務器在所有的目標上卸載FinFisher
7,把所有的C&C服務器組成一個僵尸網絡用來DDoS Gamma的網站。
最終整個黑掉Gamma的計劃失敗了。沒有獲得FinSpy 服務端的軟件,發現了一些有意思的文檔。只能在twitter上嘲笑他們一下下。如果可以破解FinSpy-PC+Mobile-2012-07-12-Final.zip,那我就可以繼續第二步了。(FinSpy-PC+Mobile-2012-07-12-Final.zip是加密過的軟件)
上面提到的掃描,漏洞挖掘,漏洞利用僅僅是hack的一種方式。可能更適合有一定編程背景的同學。條條大道通羅馬,只要是有效的方法就是好的方法。還有一些常見的方式我并沒有仔細講解,比如:
1,利用瀏覽器,falsh,java,微軟office的漏洞。給企業員工發送具有誘惑性的郵件,欺騙他們點擊郵件中的鏈接或者打開附件。也可以黑掉企業員工常去的網站,在該網站上放置利用程序。這種方式被各種政府黑客團體用的比較多。當然你不需要像政府一樣花費上百萬進行0day的挖掘,或者購買Finsploit和VUPEN的利用程序。只需要幾千塊就可以購買一個質量不錯的俄羅斯的利用程序套裝,還可以把它出租出去進一步降低成本。也可以使用metasploit。
2,利用人與人之間的信任關系。95%的情況下,人都會選擇信任和幫助別人。在信息安全行業里,使用一個聽起來很高達上的詞"社會工程學"來描述這種攻擊。如果你不是很懂計算機的話,可以更多的選擇這種方式去hack。
Links:
*
https://www.pentesterlab.com/exercises/
* http://overthewire.org/wargames/
* http://www.hackthissite.org/
* http://smashthestack.org/
* http://www.win.tue.nl/~aeb/linux/hh/hh.html
* http://www.phrack.com/
* http://pen-testing.sans.org/blog/2012/04/26/got-meterpreter-pivot
* http://www.offensive-security.com/metasploit-unleashed/PSExec_Pass_The_Hash
* https://securusglobal.com/community/2013/12/20/dumping-windows-credentials/
* https://www.netspi.com/blog/entryid/140/resources-for-aspiring-penetration-testers
(這個博客的其他文章也都非常優秀)
* https://www.corelan.be/ (start at Exploit writing tutorial part 1)
* http://websec.wordpress.com/2010/02/22/exploiting-php-file-inclusion-overview/
一個小技巧,在大部分的系統中,apache access日志是只有root權限才可以讀取的。不過你依然可以進行包含,使用/proc/self/fd/10或者apache訪問日志使用的其他fd。
* http://www.dest-unreach.org/socat/
Books:
*
The Web Application Hacker's Handbook
* Hacking: The Art of Exploitation
* The Database Hacker's Handbook
* The Art of Software Security Assessment
* A Bug Hunter's Diary
* Underground: Tales of Hacking, Madness, and Obsession on the Electronic Frontier
* TCP/IP Illustrated
你可能已經注意到我現在講的這些事可能跟Gamma做的是差不多。hacking僅僅是一種工具。并不是出售黑客工具讓Gamma變得邪惡,而是他們的客戶使用他們提供的工具所做的事情是邪惡的。這并不是說工具本身是中立的。hacking是一種進攻性的工具。我寫本文的目的是希望hacking變的更加普及,黑掉Gamma的方法真的很簡單,僅僅是典型的SQL注入。你也一樣可以做到。
Gamma Group International是一家專門販賣間諜軟件給政府和警察機構的歐洲公司。早在兩年前,它家出售的間諜軟件就在中東地區廣為出現,尤其是巴林,其記者與反對意見者的手機和計算機都被植入了這些間諜軟件。但是對這些說法,Gamma International公司并不承認。
2014年8月,一名黑客入侵了Gamma International內網,公開了40GB的內部文檔和惡意程序源代碼,揭露了Gamma International的真相。