渗透高级-----应急响应

应急响应

windows入侵排查

常见的应急响应事件分类:

Web 入侵:网页挂马、主页篡改、Webshell

系统入侵:病毒木马、勒索软件、远控后门

网络攻击:DDOS 攻击、DNS 劫持、ARP 欺骗

一,检查系统账号安全

复制代码
windows远程端口:3389----->rdp协议
linux远程端口:22----->ssh协议

1、查看服务器是否有弱口令,远程管理端口是否对公网开放。

  • 检查方法:据实际情况咨询相关服务器管理员。

2、查看服务器是否存在可疑账号、新增账号。

  • 检查方法:打开 cmd 窗口,输入 lusrmgr.msc 命令,查看是否有新增/可疑的账号,如有管理员群组的(Administrators)里的新增账户,如有,请立即禁用或删除掉。
  • 可以用鼠标点击查看命令行执行查看用户

3、查看服务器是否存在隐藏账号、克隆账号。

  • 检查方法:打开注册表 ,查看管理员对应键值。

创建一个隐藏账号:

  1. 在命令执行框中输入:net user test$ test123 /add(用户名 密码)
  1. 将创建的隐藏用户添加到Administrators用户组里:

    C:\Windows\system32>net localgroup Administrators test$ /add

  1. 通过查看用户的命令net user可以发现,没有上面创建的 test 用户;虽然这样不能查看隐藏的用户,但是这样的方式还是很容易被发现。
  1. 修改注册表,实现test用户全隐藏

    1. 给指定文件添加Administrators权限,并重新打开注册表查看:

      一个用户对应一个文件:

    2. 将Administrators用户对应项的F数据值复制到test$用户对应的F数据值。


    3. 将test$用户所对应的000003E9导出,分别重命名

    4. 删除test$用户,将test.reg和3E9.reg导入注册表:(只能在注册表看见影子账户)

      复制代码
      C:\Windows\system32>net user test$ /del
      命令成功完成。
      // 然后双击reg文件进行注册信息导入

      然后就完成了影子账户的创建。

4、结合日志,查看管理员登录时间、用户名是否存在异常。

  • 检查方法:

    a、Win+R 打开运行,输入"eventvwr.msc",回车运行,打开"事件查看器"。

    b、导出 Windows 日志 -- 安全,利用微软官方工具 Log Parser 进行分析。

二、检查异常端口、进程 netstat -ano | findstr ESTAB 进程监听

1、检查端口连接情况,是否有远程连接、可疑连接。

  • 检查方法:

    a、使用netstat -ano 命令查看目前的网络连接,定位可疑的 ESTABLISHED

    b、根据 netstat 命令定位出的 PID 编号,再通过 tasklist 命令进行进程定位 tasklist | findstr "PID"

2、进程 process monitor process explorer

  • 检查方法:

    a、开始 -- 运行 -- 输入 msinfo32 命令,依次点击 "软件环境 -- 正在运行任务" 就可以查看到进程的详细信息,比如进程路径、进程ID、文件创建日期以及启动时间等。

    b、打开D盾_web查杀工具,进程查看,关注没有签名信息的进程。

    c、通过微软官方提供的 Process Explorer 等工具进行排查 。

    d、查看可疑的进程及其子进程。可以通过观察以下内容:

    没有签名验证信息的进程
    没有描述信息的进程
    进程的属主
    进程的路径是否合法
    CPU 或内存资源占用长时间过高的进程

三、检查启动项、计划任务、服务

1、检查服务器是否有异常的启动项。

  • 检查方法:

    a、登录服务器,单击【开始】>【所有程序】>【启动】,默认情况下此目录在是一个空目录,确认是否有非业务程序在该目录下。

    b、单击开始菜单 >【运行】,输入 msconfig,查看是否存在命名异常的启动项目,是则取消勾选命名异常的启动项目,并到命令中显示的路径删除文件。

    c、单击【开始】>【运行】,输入 regedit,打开注册表,查看开机启动项是否正常,特别注意如下三个注册表项:

    复制代码
    HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\run
    HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run
    HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Runonce

    检查右侧是否有启动异常的项目,如有请删除,并建议安装杀毒软件进行病毒查杀,清除残留病毒或木马。

    d、利用安全软件查看启动项、开机时间管理等。

    e、组策略,运行 gpedit.msc

2、检查计划任务

  • 检查方法:

    a、单击【开始】>【设置】>【控制面板】>【任务计划】,查看计划任务属性,便可以发现木马文件的路径。

    b、单击【开始】>【运行】;输入 cmd,然后输入 schtasks.exe,检查计算机与网络上的其它计算机之间的会话或计划任务,如有,则确认是否为正常连接。

3、服务自启动

  • 检查方法:单击【开始】>【运行】,输入 services.msc,注意服务状态和启动类型,检查是否有异常服务。

Linux入侵排查

一、账号安全

复制代码
// 1,用户信息文件
root@ning:~# cat /etc/passwd 
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin

// 2,影子文件
root@ning:~# cat /etc/shadow
root:$y$j9T$i2IdqsdM0qfrLyNSX7fn/0$XeSBT9qyltX0w2Qe4jZAx0kFU6BQLXjKC2.NdUxIHL1:20293:0:99999:7:::
用户名:加密密码:密码最后一次修改日期:两次密码的修改时间间隔:密码有效期:密码修改到期到的警告天数:密码过期之后的宽限天数:账号失效时间:保留

入侵排查

复制代码
1、查询特权用户特权用户(uid 为0)
root@ning:~# awk -F: '$3==0{print $1}' /etc/passwd
root

2、查询可以远程登录的帐号信息
root@ning:~# awk '/\$1|\$6/{print $1}' /etc/shadow    // 这里显示出来的是用户和登录密码
ning:$6$p35zJuYrg4vYGmhT$NrTosIG9/a9VStjakSNJNeDDLQOr/T4ubF8F83ORqKtmlbyxu52deWxmVeYmgITDGH3WdRCeDIO.tLMWYWgty0:20292:0:99999:7:::

3、除root帐号外,其他帐号是否存在sudo权限。如非管理需要,普通帐号应删除sudo权限
root@ning:~# more /etc/sudoers | grep -v "^#\|^$" | grep "ALL=(ALL)"
%admin ALL=(ALL) ALL

4、禁用或删除多余及可疑的帐号
    usermod -L user    禁用帐号,帐号无法登录,/etc/shadow 第二栏为 ! 开头
	userdel user       删除 user 用户
	userdel -r user    将删除 user 用户,并且将 /home 目录下的 user 目录一并删除

二、检查异常端口

使用 netstat 网络连接命令,分析可疑端口、IP、PID

复制代码
netstat -antlp | more

查看下 pid 所对应的进程文件路径,
运行 ls -l /proc/$PID/exe 或 file /proc/$PID/exe($PID 为对应的 pid 号)

三、检查异常进程

使用 ps 命令,分析进程

复制代码
root@ning:~# ps aux | grep pid 
message+    1336  0.0  0.1  12176  7276 ?        Ss   17:14   0:00 @dbus-daemon --system --address=systemd: --nofork --nopidfile --systemd-activation --syslog-only
ning        2633  0.0  0.1  10884  6644 ?        Ss   17:14   0:00 /usr/bin/dbus-daemon --session --address=systemd: --nofork --nopidfile --systemd-activation --syslog-only
root        3836  0.0  0.1   9456  4780 ?        Ss   17:15   0:00 /usr/bin/dbus-daemon --session --address=systemd: --nofork --nopidfile --systemd-activation --syslog-only
root        4345  0.0  0.0   9304  2276 pts/2    S+   17:58   0:00 grep --color=auto pid

四、 检查开机启动项

系统运行级别示意图:

运行级别 含义
0 关机
1 单用户模式,可以想象为windows的安全模式,主要用于系统修复
2 不完全的命令行模式,不含NFS服务
3 完全的命令行模式,就是标准字符界面
4 系统保留
5 图形模式
6 重启动

查看运行级别命令 runlevel

复制代码
root@ning:~# runlevel 
N 5

系统默认允许级别

复制代码
vim  /etc/inittab
id=3:initdefault  #系统开机后直接进入哪个运行级别

开机启动配置文件

复制代码
/etc/rc.local
/etc/rc.d/rc[0~6].d

五、检查定时任务

1、利用 crontab 创建计划任务

复制代码
crontab -l   列出某个用户cron服务的详细内容
Tips:默认编写的crontab文件会保存在 (/var/spool/cron/用户名 例如: /var/spool/cron/root
crontab -r   删除每个用户cront任务(谨慎:删除所有的计划任务)
crontab -e   使用编辑器编辑当前的crontab文件 
如:*/1 * * * * echo "hello world" >> /tmp/test.txt 每分钟写入文件

2、利用 anacron 命令实现异步定时任务调度

复制代码
每天运行 /home/backup.sh 脚本:
vi /etc/anacrontab 
@daily    10    example.daily   /bin/bash /home/backup.sh
当机器在 backup.sh 期望被运行时是关机的,anacron会在机器开机十分钟之后运行它,而不用再等待 7天。

重点关注以下目录中是否存在恶意脚本:

复制代码
/var/spool/cron/* 
/etc/crontab
/etc/cron.d/*
/etc/cron.daily/* 
/etc/cron.hourly/* 
/etc/cron.monthly/*
/etc/cron.weekly/
/etc/anacrontab
/var/spool/anacron/*

小技巧:more /etc/cron.daily/* 查看目录下所有文件。

六、检查服务自启动

第一种修改方法:

复制代码
chkconfig [--level 运行级别] [独立服务名] [on|off]
chkconfig --level  2345 httpd on  开启自启动
chkconfig httpd on (默认level是2345)

第二种修改方法:

复制代码
修改 /etc/re.d/rc.local 文件  
加入 /etc/init.d/httpd start

第三种修改方法:

使用 ntsysv 命令管理自启动,可以管理独立服务和 xinetd 服务。

七、检查异常文件

1、查看敏感目录,如/tmp目录下的文件,同时注意隐藏文件夹,以"..."为名的文件夹具有隐藏属性

2、得到发现WEBSHELL、远控木马的创建时间,如何找出同一时间范围内创建的文件?

​ 可以使用find命令来查找,如 find /opt -name "*" -atime 1 -type f 找出 /opt 下一天前访问过的文件

3、针对可疑文件可以使用 stat 进行创建修改时间。

八、检查系统日志

日志默认存放位置:/var/log/

查看日志配置情况:more /etc/rsyslog.conf

日志文件 说明
/var/log/cron 记录了系统定时任务相关的日志
/var/log/cups 记录打印信息的日志
/var/log/dmesg 记录了系统在开机时内核自检的信息,也可以使用dmesg命令直接查看内核自检信息
/var/log/mailog 记录邮件信息
/var/log/message 记录系统重要信息的日志。这个日志文件中会记录Linux系统的绝大多数重要信息,如果系统出现问题时,首先要检查的就应该是这个日志文件
/var/log/btmp 记录错误登录日志,这个文件是二进制文件,不能直接vi查看,而要使用lastb命令查看
/var/log/lastlog 记录系统中所有用户最后一次登录时间的日志,这个文件是二进制文件,不能直接vi,而要使用lastlog命令查看
/var/log/wtmp 永久记录所有用户的登录、注销信息,同时记录系统的启动、重启、关机事件。同样这个文件也是一个二进制文件,不能直接vi,而需要使用last命令来查看
/var/log/utmp 记录当前已经登录的用户信息,这个文件会随着用户的登录和注销不断变化,只记录当前登录用户的信息。同样这个文件不能直接vi,而要使用w,who,users等命令来查询
/var/log/secure 记录验证和授权方面的信息,只要涉及账号和密码的程序都会记录,比如SSH登录,su切换用户,sudo授权,甚至添加用户和修改用户密码都会记录在这个日志文件中

日志分析技巧:

复制代码
1、定位有多少IP在爆破主机的root帐号:    
root@ning:/usr/local/nginx/logs# grep "Failed password for root" /usr/local/nginx/logs/access.log | awk '{print $11}' | uniq -c | sort -nr | more

定位有哪些IP在爆破:
grep "Failed password" /usr/local/nginx/logs/access.log | grep -E -o "(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)"| uniq -c

爆破用户名字典是什么?
grep "Failed password" /usr/local/nginx/logs/access.log | awk '{print $9}' | sort -nr | uniq -c
 
2、登录成功的IP有哪些: 	
grep "Accepted " /usr/local/nginx/logs/access.log | awk '{print $11}' | sort | uniq -c | sort -nr | more

登录成功的日期、用户名、IP:
grep "Accepted " /usr/local/nginx/logs/access.log | awk '{print $1,$2,$3,$9,$11}' 

九、使用脚本防止暴力破解

1,IP暴力破解:shell封堵在特定时间,一分钟内,爆破次数超过几次的IP

sh 复制代码
root@ning:~# vim deny.sh
#!/bin/bash
# 日志文件路径
logfile=/usr/local/nginx/logs/
last_minutes=1 
# 开始时间1分钟之前(这里可以修改,如果要几分钟之内攻击次数多少次,这里可以自定义)
start_time=`date -d"$last_minutes minutes ago" +"%d/%m/%Y:%H:%M:%S"`
echo $start_time
# 结束时间现在
stop_time=`date +"%d/%m/%Y:%H:%M:%S"`
echo $stop_time
cur_date="`date +%d/%m/%Y`"
echo $cur_date
# 过滤出单位之间内的日志并统计最高ip数,请替换为你的日志路径
tac $logfile/access.log | awk -v st="$start_time" -v et="$stop_time" '{t=substr($4,2);if(t>=st && t<=et){print $1}}' |sort | uniq -c | sort -nr > $logfile/log_ip_top10
#ip_top=`cat $logfile/log_ip_top10 | head -1 | awk '{print $1}'`
# 出现横杠使用sed去掉第一行
#sed -i '1d' $logfile/log_ip_top10    
# 单位时间[1分钟]内单ip访问次数超过200次的ip记录入black.txt
ip=`cat $logfile/log_ip_top10 | awk '{if($1 > 100)print $2}'`
for line in $ip
do
echo $line >> $logfile/getip.txt
echo $line
iptables -I INPUT -p tcp  -m multiport --dport 80,443 -s $line -j DROP
done

root@ning:~# chmod +x deny.sh    // 给deny.sh脚本添加执行权限
root@ning:~# ./deny.sh         # 执行文件
03/08/2025:19:00:35
03/08/2025:19:01:35
03/08/2025

# 写一个任务计划,每分钟执行一次该脚本:
root@ning:~# echo "* * * * * root /deny.sh" >> /etc/crontab

2,ssh暴力破解:自动封禁频繁尝试 SSH 登录失败的 IP 地址 ,并确保 iptables 服务正常运行

sh 复制代码
root@ning:~# vim deny_ssh.sh
#!/bin/bash
# 提取频繁登录失败的 IP
IP=$(awk '/Failed password/ {IP[$(NF-3)]++} END { for (k in IP) { if (IP[k]>=4) print k }}' /usr/local/nginx/logs/access.log)
# 遍历IP并封禁
for i in $IP
do
  tmpIP=(`iptables -L -n | tr -s " " | awk '/^DROP/ && /22$/ {print $4}'`)
  # 检查 IP 是否已封禁
  echo ${tmpIP[@]} | grep -qw $i
  
  if [ $? -ne 0 ]
  then
    iptables -I INPUT -p tcp --dport 22 -s $i -j DROP 
  fi
done
# 确保 iptables 服务安装并启用
rpm -q iptables-services &> /dev/null
if [ $? -ne 0 ]
then
   yum -y install iptables-services &>/dev/null
   systemctl enable --now iptables.service &> /dev/null
fi
# 保存 iptables 规则
iptables-save > /etc/sysconfig/iptables
# 清理临时变量
unset tmpIP

root@ning:~# chmod +x deny_ssh.sh     // 添加执行权限

# 写一个任务计划,每天执行一次该脚本:
root@ning:~# echo "0 0 * * * root /deny_ssh.sh" >> /etc/crontab

Web日志分析

日志分析技巧

在对WEB日志进行安全分析时,一般可以按照两种思路展开,逐步深入,还原整个攻击过程。

第一种:确定入侵的时间范围,以此为线索,查找这个时间范围内可疑的日志,进一步排查,最终确定攻击者,还原攻击过程。

第二种:攻击者在入侵网站后,通常会留下后门维持权限,以方便再次访问,我们可以找到该文件,并以此为线索来展开分析。

Linux下,使用Shell命令组合查询分析。

Shell+Linux命令实现日志分析,一般结合grep、awk等命令等实现了几个常用的日志分析统计技巧。

apl 复制代码
1、列出当天访问次数最多的IP命令:
cut -d- -f 1 log_file|uniq -c | sort -rn | head -20

2、查看当天有多少个IP访问:
awk '{print $1}' log_file|sort|uniq|wc -l

3、查看某一个页面被访问的次数:
grep "/index.php" log_file | wc -l

4、查看每一个IP访问了多少个页面:
awk '{++S[$1]} END {for (a in S) print a,S[a]}' log_file

5、将每个IP访问的页面数进行从小到大排序:
awk '{++S[$1]} END {for (a in S) print S[a],a}' log_file | sort -n

6、查看某一个IP访问了哪些页面:
grep ^111.111.111.111 log_file| awk '{print $1,$7}'

7、去掉搜索引擎统计当天的页面:
awk '{print $12,$1}' log_file | grep ^\"Mozilla | awk '{print $2}' |sort | uniq | wc -l

8、查看2018年6月21日14时这一个小时内有多少IP访问:
awk '{print $4,$1}' log_file | grep 21/Jun/2018:14 | awk '{print $2}'| sort | uniq | wc -l	

日志统计分析技巧

统计爬虫:

javascript 复制代码
grep -E 'Googlebot|Baiduspider'  /usr/local/nginx/logs/access.log | awk '{ print $1 }' | sort | uniq

统计浏览器:

javascript 复制代码
root@ning:/usr/local/nginx/logs# cat /usr/local/nginx/logs/access.log | grep -v -E 'MSIE|Firefox|Chrome|Opera|Safari|Gecko|Maxthon' | sort | uniq -c | sort -r -n | head -n 100               
      6 192.168.64.130 - - [30/Jul/2025:16:31:00 +0800] "GET /demo2.html HTTP/1.0" 200 494 "-" "-"
      6 192.168.64.130 - - [30/Jul/2025:16:30:59 +0800] "GET /demo2.html HTTP/1.0" 200 494 "-" "-"

IP 统计:

javascript 复制代码
grep '2/Aug/2025' /usr/local/nginx/logs/access.log | awk '{print $1}' | awk -F'.' '{print $1"."$2"."$3"."$4}' | sort | uniq -c | sort -r -n | head -n 10		

统计网段:

javascript 复制代码
root@ning:/usr/local/nginx/logs# cat /usr/local/nginx/logs/access.log | awk '{print $1}' | awk -F'.' '{print $1"."$2"."$3".0"}' | sort | uniq -c | sort -r -n | head -n 200
    566 192.168.64.0

统计域名:

javascript 复制代码
root@ning:/usr/local/nginx/logs# cat  /usr/local/nginx/logs/access.log |awk '{print $2}'|sort|uniq -c|sort -rn|more    
    566 -

HTTP Status:

javascript 复制代码
cat  /usr/local/nginx/logs/access.log |awk '{print $9}'|sort|uniq -c|sort -rn|more
    357 200
    145 500
     55 404
      9 304

URL 统计:

javascript 复制代码
cat  /usr/local/nginx/logs/access.log |awk '{print $7}'|sort|uniq -c|sort -rn|more			

文件流量统计:

javascript 复制代码
cat /usr/local/nginx/logs/access.log |awk '{sum[$7]+=$10}END{for(i in sum){print sum[i],i}}'|sort -rn|more

grep ' 200 ' /usr/local/nginx/logs/access.log |awk '{sum[$7]+=$10}END{for(i in sum){print sum[i],i}}'|sort -rn|more			

URL访问量统计:

javascript 复制代码
root@ning:/usr/local/nginx/logs# cat /usr/local/nginx/logs/access.log | awk '{print $7}' | egrep '\?|&' | sort | uniq -c | sort -rn | more
    107 /bypass/demo3.php?a=id
     11 /bypass/demo6.php?a=id
      9 /bypass/demo4.php?a=id

脚本运行速度:

查出运行速度最慢的脚本

javascript 复制代码
grep -v 0$ /usr/local/nginx/logs/access.log | awk -F '\" ' '{print $4" " $1}' web.log | awk '{print $1" "$8}' | sort -n -k 1 -r | uniq > /tmp/slow_url.txt

IP, URL 抽取:

javascript 复制代码
# tail -f /usr/local/nginx/logs/access.log | grep '/test.html' | awk '{print $1" "$7}'			
相关推荐
天荒地老笑话么29 分钟前
静态 IP 规划:掩码/网关/DNS 的正确组合
网络·网络协议·tcp/ip·网络安全
大方子18 小时前
【PolarCTF】rce1
网络安全·polarctf
枷锁—sha20 小时前
Burp Suite 抓包全流程与 Xray 联动自动挖洞指南
网络·安全·网络安全
聚铭网络20 小时前
聚铭网络再度入选2026年度扬州市网络和数据安全服务资源池单位
网络安全
darkb1rd1 天前
八、PHP SAPI与运行环境差异
开发语言·网络安全·php·webshell
世界尽头与你1 天前
(修复方案)基础目录枚举漏洞
安全·网络安全·渗透测试
枷锁—sha2 天前
【SRC】SQL注入快速判定与应对策略(一)
网络·数据库·sql·安全·网络安全·系统安全
liann1192 天前
3.1_网络——基础
网络·安全·web安全·http·网络安全
ESBK20252 天前
第四届移动互联网、云计算与信息安全国际会议(MICCIS 2026)二轮征稿启动,诚邀全球学者共赴学术盛宴
大数据·网络·物联网·网络安全·云计算·密码学·信息与通信
旺仔Sec2 天前
一文带你看懂免费开源 WAF 天花板!雷池 (SafeLine) 部署与实战全解析
web安全·网络安全·开源·waf