服务器被入侵了?反手溯源出入侵者画像【网络安全】
前序
手機(jī)上發(fā)來服務(wù)器被入侵的消息,這令人感到一臉懵,這個(gè)服務(wù)器也不是啥重要東西,上面啥也沒有怎么還會被搞?被人搞了那也不能示弱了,
排查后門
開機(jī)進(jìn)行分析。一登陸進(jìn)服務(wù)器就想起來了之前做測試的時(shí)候直接在服務(wù)器上搭了個(gè)文件上傳的靶場,就很難受了,這就是自作自受啊~~。沒辦法,只好先找馬吧。首先就在upload的文件夾下發(fā)現(xiàn)了木馬后門,然后查看隱藏文件時(shí)還發(fā)現(xiàn)了一個(gè)“不死馬”。
又仔細(xì)看了下shell.php,這是個(gè)PHP的冰蝎馬,這要進(jìn)行流量分析肯定也溯源不回去啊,操作流量都是加密的。再看那個(gè).config.php妥妥的“不死馬”,刪了還會再生。接下來肯定也溯源不回去啊,操作流量都是加密的。再看那個(gè).config.php妥妥的“不死馬”,刪了還會再生。
- 1.創(chuàng)建一個(gè)和不死馬生成的馬一樣名字的目錄。
- 2.編寫一個(gè)使用ignore_user_abort(true)函數(shù)的腳本,一直競爭寫入刪除不死馬文件,其中usleep()的時(shí)間必須要小于不死馬的usleep()時(shí)間才會有效果。
- 3.在具有高權(quán)限時(shí),重啟Apache直接刪除即可。
- 4.如果沒有權(quán)限重啟就kill掉www-data用戶的所有子進(jìn)程。
雖然有權(quán)限,但是還是覺得單獨(dú)清理www-data下的子進(jìn)程能好一些,執(zhí)行命令:
ps aux | grep www-data | awk '{print $2}' | xargs kill -9然后再rm -f .config.php就清除了“不死馬”。
反擊溯源
清除了后門后,又好一頓檢查應(yīng)該是沒有問題了。就想著能不能溯源找到這個(gè)黑客呢,首先看了下history歷史記錄,又看了下Apache日志記錄。他竟然給刪了。好吧,但是也只能說這個(gè)黑客有點(diǎn)背,這本就是平時(shí)做測試用的服務(wù)器,之前用這個(gè)服務(wù)器做測試的時(shí)候給好幾個(gè)文件加過一個(gè)流量監(jiān)控的WAF,打開WAF生成的日志記錄,還真的抓取到了它攻擊的記錄,捕獲到了它的IP。
拿著這個(gè)IP放到微步在線進(jìn)行一番查詢,很久之前就被人標(biāo)記為是個(gè)傀儡機(jī)了,看來是個(gè)老油條了。
攻克傀儡機(jī)
【→所有資源關(guān)注我,可點(diǎn)擊查看獲取←】
1、網(wǎng)絡(luò)安全學(xué)習(xí)路線
2、電子書籍(白帽子)
3、安全大廠內(nèi)部視頻
4、100份src文檔
5、常見安全面試題
6、ctf大賽經(jīng)典題目解析
7、全套工具包
8、應(yīng)急響應(yīng)筆記
知道目標(biāo)機(jī)器后拿出nmap進(jìn)行一波掃描,發(fā)現(xiàn)目標(biāo)的3306端口竟然暴露出來了,而80端口訪問頁面也什么東西沒有。
然而第一時(shí)間并沒有考慮SSH弱密碼和Mysql弱密碼的事,因?yàn)榛竞苌倥龅竭^。同時(shí)根據(jù)微步查詢的結(jié)果判斷,所以第一時(shí)間就猜想這個(gè)網(wǎng)站上一定“萬馬奔騰”,于是就祭出了改裝掃描工具對其進(jìn)行探測,結(jié)果還真存在馬。這里使用的是改裝過的dirsearch,在它的配置字典里加上了一些常見后門命名。
從掃描結(jié)果看除了這兩個(gè)存在的馬之外還有個(gè)2.php,訪問后頁面都是空白,那八成確定就是某個(gè)黑客遺留的小馬后門了,于是自己寫了個(gè)小腳本對這幾個(gè)后門依次進(jìn)行探測,首先上網(wǎng)找了個(gè)后門密碼字典,然后載入這個(gè)黑客之前種的馬的密碼,最終利用腳本如下:
Import requests url = "http://ip/bgdoor.php"#后門地址 dict = open('后門密碼字典.txt','r') dict_list = dict.readlines() print("[+] 請選擇木馬類型 1.GET 2.POST") type = input("") if int(type)==1: for i in dict_list: data = {i.strip():'phpinfo();'} res = requests.get(url,data) if '$_SERVER' in res.text: print(i.strip()) if int(type)==2: for i in dict_list: data = {i.strip():'phpinfo();'} res = requests.post(url,data) if '$_SERVER' in res.text: print(i.strip())和種的馬密碼是相同的,那接下來就騎著他的馬打他吧
社工藝術(shù)黑手畫像
蹭上馬后,進(jìn)去就是一番翻箱倒柜,因?yàn)榍懊娴亩丝谔綔y,知道存在MySQL的服務(wù),當(dāng)時(shí)的想法就是找到MySQL的登錄密碼。所以第一時(shí)間進(jìn)去后就開始尋找MySQL的目錄位置去尋找user.MYD文件,最終找到該文件的路徑為:D:\MySQL\data\mysql\user.MYD。而找這個(gè)文件是因?yàn)槠渲斜4嬷脩魯?shù)據(jù)庫登錄的用戶名和密碼哈希值。打開后看到用戶名就是root。
而對于該文件的密碼哈希的獲取我這樣來解釋,首先存在*這就代表該密碼的哈希長度一定是40位,而該文件開頭部分存在四段不同的密碼哈希,將每一段單獨(dú)提出,找到其中兩段是26位和14位,拼接到一起剛好40位,即為MySQL登錄的密碼哈希值。得到密碼哈希值后送到cmd5網(wǎng)站就是一波破解。
破解后得到了密碼結(jié)果,這個(gè)密碼應(yīng)該也算得上是個(gè)弱口令了,就是不太常用,反正cmd5庫里存在,這里就不再吐槽了。然后用得到用戶名和密碼就輕車熟路的進(jìn)入了數(shù)據(jù)庫。
進(jìn)去后看了看這個(gè)數(shù)據(jù)庫,里面的內(nèi)容較少,看樣子應(yīng)該也不常用。不過我還是在一番仔細(xì)尋找后找到點(diǎn)東西,密碼就不打碼了,md5解密后就是“123456”,應(yīng)該是注冊人當(dāng)時(shí)隨便注冊的吧,但是前面的user和mail得打碼了,這倆信息有點(diǎn)意思。如下圖所示。
拿到user值,看樣子注冊的時(shí)候應(yīng)該是他的網(wǎng)絡(luò)常用ID,但是不確定這個(gè)ID是這臺機(jī)器原本主人留下的,還是這個(gè)黑客留下的。于是就谷歌了一下這個(gè)ID,信息不是很多,但是存在一個(gè)作廢的博客。再看下這個(gè)QQ,嘗試加了下好友,發(fā)現(xiàn)這明顯就是一個(gè)小號,空間內(nèi)容就更新過一兩次還多是廣告。
再看看這小號的第一條說說,什么QQ飛車榮譽(yù)殿堂之類的,好像還可以幫忙刷Q幣,但看樣子也都是好久之前的信息了。這么一看就感覺好像是那個(gè)黑服務(wù)器的人,多少有點(diǎn)野路子。然后本著繼續(xù)探索的心理,我加了他一下QQ,結(jié)果好幾天沒個(gè)回復(fù),估計(jì)這號他都要作廢了吧。沒辦法回到那個(gè)廢棄的博客上,再研究研究吧。
這個(gè)博客是常見的WordPress,那么常規(guī)操作:網(wǎng)址后加上/wp-admin找后臺,訪問存在這個(gè)路徑后臺,地址沒有修改,然后WordPress的默認(rèn)用戶名是admin,那么接下來就是密碼字典生成了,因?yàn)橹癕ySQL數(shù)據(jù)庫也弄到一個(gè)密碼,再把他的常用ID用社工庫查了一下得到了一個(gè)舊密碼,但是不確定是不是他的。最后結(jié)合它的ID歷史密碼和Mysql登錄密碼,利用社工密碼字典生成工具生成了一個(gè)組合密碼字典,掏出BurpSuite就是一把梭。
看到結(jié)果心里笑出了聲,登錄進(jìn)去就看到了郵箱地址確認(rèn)提示,這個(gè)郵箱還是個(gè)QQ郵箱,這下應(yīng)該就是黑客的大號了。
然后又嘗試加了下好友,至少確定這是個(gè)常用號,一個(gè)SVIP的大佬。因?yàn)橐矝]有什么驗(yàn)證措施,所以第二天就同意了。
接下來就沒啥可說的了,空間動態(tài)輕松的就暴露了他的大量信息,定位特殊的建筑物位置得到曾經(jīng)去過的大概的位置,還翻到半年前曾在空間發(fā)通知換了手機(jī)號,再看空間留言,大家都叫他老徐。
整理一下目前得到的信息:
手機(jī)號碼、大概位置、出生年月日、姓氏。
利用得到的手機(jī)號去支付寶進(jìn)行轉(zhuǎn)賬,然后對姓名進(jìn)行校驗(yàn),看看能不能得到名字全稱。
校驗(yàn)時(shí)發(fā)現(xiàn)名字只有兩個(gè)字,姓氏前面我們已經(jīng)知道了,校驗(yàn)時(shí)提示出的是名字,讓填姓氏,我們填入"徐"姓,校驗(yàn)通過,得到完整的姓名。
接著拿著手機(jī)號去搜索了一番,發(fā)現(xiàn)存在一個(gè)微博賬號,在微博賬號的資料欄里又得到了一個(gè)生日,猜想微博這個(gè)才是正確的,qq資料卡的為假的。
準(zhǔn)備猜測一波SFZ,以下是當(dāng)時(shí)的猜解過程:因?yàn)榍懊嫱ㄟ^查看黑客的生活照中的建筑物確定了黑客的基本地區(qū),我們利用XX省XX縣XX鎮(zhèn)的SFZ地區(qū)號來構(gòu)造一下SFZ前面的部分,通過查詢發(fā)現(xiàn)地區(qū)號碼為51****,出生年月日就用微博資料里寫的19911023,只有后四位不確定,因?yàn)楹诳褪悄行?#xff0c;所以可以確定SFZ第17位是奇數(shù)。第17位范圍是:1-3-5-7-9 這4個(gè)數(shù)字,而最后一位的范圍是:0-1-2-3-4-5-6-7-8-9-10這11個(gè)數(shù)字,第15和第16位則是0~9這10個(gè)數(shù)字。于是準(zhǔn)備利用阿里的SFZ實(shí)名認(rèn)證api進(jìn)行枚舉驗(yàn)證。
最終寫了個(gè)腳本批量爆破,成功匹配到真實(shí)的SFZ。
import urllib,urllib2,sysimport sslhost = 'https://idcard.market.alicloudapi.com'path = '/lianzhuo/idcard'method = 'GET'appcode = '2e1ac42e**************4f8258e438'querys = 'cardno=5*****19911023'name = '&name=*****'bodys = {}for i in range(5000):url = host + path + '?' + querys + str(i) + namerequest = urllib2.Request(url)request.add_header('Authorization', 'APPCODE ' + appcode)ctx = ssl.create_default_context()ctx.check_hostname = Falsectx.verify_mode = ssl.CERT_NONEresponse = urllib2.urlopen(request, context=ctx)content = response.read()if (content):print(content)到最后可算是鎖定到這個(gè)人了,收工前再梳理一下得到的信息,分析黑客人物畫像:
姓名:徐*性別:男年齡:29家庭地址:**省**市**縣**鎮(zhèn)**手機(jī)號碼:1**********出生年月:19911023SFZ:5*****19911023****總結(jié)
1、一些敏感業(yè)務(wù)不要輕易放到公網(wǎng)服務(wù)器上,放上一定要做好安全。
2、在溯源分析時(shí),遇到傀儡機(jī)可以考慮下蹭馬利用的方式。
3、數(shù)據(jù)庫密碼哈希值獲取,搜尋敏感信息。
4、社工查詢:谷歌搜索、QQ資料、細(xì)心關(guān)聯(lián)分析。
總結(jié)
以上是生活随笔為你收集整理的服务器被入侵了?反手溯源出入侵者画像【网络安全】的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 适合入门代码审计之熊海cms
- 下一篇: 教你如何搭建一个骗子举报/信息查询的平台