当前位置: 首页 > news >正文

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

应急响应

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
root2、查询可以远程登录的帐号信息
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) ALL4、禁用或删除多余及可疑的帐号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 -c2、登录成功的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

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
doneroot@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 服务正常运行

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
dotmpIP=(`iptables -L -n | tr -s " " | awk '/^DROP/ && /22$/ {print $4}'`)# 检查 IP 是否已封禁echo ${tmpIP[@]} | grep -qw $iif [ $? -ne 0 ]theniptables -I INPUT -p tcp --dport 22 -s $i -j DROP fi
done
# 确保 iptables 服务安装并启用
rpm -q iptables-services &> /dev/null
if [ $? -ne 0 ]
thenyum -y install iptables-services &>/dev/nullsystemctl enable --now iptables.service &> /dev/null
fi
# 保存 iptables 规则
iptables-save > /etc/sysconfig/iptables
# 清理临时变量
unset tmpIProot@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等命令等实现了几个常用的日志分析统计技巧。

1、列出当天访问次数最多的IP命令:
cut -d- -f 1 log_file|uniq -c | sort -rn | head -202、查看当天有多少个IP访问:
awk '{print $1}' log_file|sort|uniq|wc -l3、查看某一个页面被访问的次数:
grep "/index.php" log_file | wc -l4、查看每一个IP访问了多少个页面:
awk '{++S[$1]} END {for (a in S) print a,S[a]}' log_file5、将每个IP访问的页面数进行从小到大排序:
awk '{++S[$1]} END {for (a in S) print S[a],a}' log_file | sort -n6、查看某一个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 -l8、查看2018年6月21日14时这一个小时内有多少IP访问:
awk '{print $4,$1}' log_file | grep 21/Jun/2018:14 | awk '{print $2}'| sort | uniq | wc -l	

日志统计分析技巧

统计爬虫:

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

统计浏览器:

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 统计:

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		

统计网段:

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 200566 192.168.64.0

统计域名:

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:

cat  /usr/local/nginx/logs/access.log |awk '{print $9}'|sort|uniq -c|sort -rn|more357 200145 50055 4049 304

URL 统计:

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

文件流量统计:

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

URL访问量统计:

root@ning:/usr/local/nginx/logs# cat /usr/local/nginx/logs/access.log | awk '{print $7}' | egrep '\?|&' | sort | uniq -c | sort -rn | more107 /bypass/demo3.php?a=id11 /bypass/demo6.php?a=id9 /bypass/demo4.php?a=id

脚本运行速度:

查出运行速度最慢的脚本

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 抽取:

# tail -f /usr/local/nginx/logs/access.log | grep '/test.html' | awk '{print $1" "$7}'			
http://www.lryc.cn/news/609353.html

相关文章:

  • LLM调研
  • nestjs @Param 从入门到精通
  • 大模型能力测评(提示词请帮我把这个项目改写成为python项目)
  • 数据结构基础 - 平衡二叉树
  • 关于 xrdp远程桌面报错“Error connecting to sesman on 127.0.0.1:3350“的解决方法
  • lua table常用函数汇总
  • 6. 平台总线
  • 模型学习系列之参数
  • 秋招笔记-8.3
  • 关于记录一下“bug”,在做图片上传的时候出现的小问题
  • 验房收房怎么避免被坑?
  • 我的世界进阶模组开发教程——伤害(2)
  • 自己实现一个freertos(2)任务调度 1——最基本的TCB
  • 深入解析HashMap:原理与性能优化
  • Redis实战(7)-- 高级特性 Redis Stream数据结构与基础命令
  • spring batch处理数据模板(Reader-Processor-Writer模式)
  • Timer实现定时调度的原理是什么?
  • PPT 转高精度 PDF API 接口
  • 使用DrissionPage实现xhs笔记自动翻页并爬取笔记视频、图片
  • Coin Combinations I(Dynamic Programming)
  • Docker环境离线安装指南
  • 解剖 .NET 经典:从 Component 到 BackgroundWorker
  • node.js常用函数
  • GaussDB case when的用法
  • SpringBoot AI自动化测试实战案例
  • GitCode疑难问题诊疗
  • Linux命令基础(下)
  • 1.内核模块
  • 14.Redis 哨兵 Sentinel
  • 2. 字符设备驱动