LINUX&WINDOWS应急响应排查

  • A+
所属分类:运维基础

一.WINDOWS应急响应

1.文件排查

1)使用Process Explore、Process Monitor、Autoruns查看进程运行时的文件位置。

2)查看开机有无异常文件

WIN+R执行msconfig

3)敏感文件路径排查

  1. %WINDIR%  
  2. %WINDIR%\system32  
  3. %TEMP% 查看Windows产生的临时文件有无异常  
  4. %LOCALAPPDATA%  
  5. %APPDATA%  

4)查看用户recent最近的使用文档:

  1. WIN+R执行%UserProfile%\Recent  

5)文件夹内按时间顺序排序,查找可疑文件

6)有些文件,存在被黑客修改过时间 对比创建时间和修改时间,寻找可疑文件。

2.进程排查

1)查看目前的网络连接

  1. 定位可疑的ESTABLISHED:netstat -ano |findstr ESTABLISHED  
  2. 接着配合netstat定位到pid,在通过tasklist命令定位进行程:tasklist | findstr pid  
  3.   
  4. 注:  
  5. LISTENING:侦听状态  
  6. ESTABLISHED:建立连接  
  7. CLOSE_WAIT:对方主动关闭连接或网络异常中断  

2)wmic process获取进程全路径

  1. wmic process | findstr "target.exe"  
  2. 或者任务管理器定位到进程路径  
  3.   
  4. 查询进程:  
  5. wmic process  
  6. wmic process list brief  

3)获取进程绝对位置

  1. wmic process where name="XXX" get executablepath  
  2. 删除进程:  
  3. wmic process where processid="2345" delete  

4)枚举启动项&枚举计划任务

  1. C:\Users\QIYOU>wmic startup list full  
  2.   
  3.   
  4. Caption=Autodesk Sync  
  5. Command=C:\Program Files\Autodesk\Autodesk Sync\AdSync.exe  
  6. Description=Autodesk Sync  
  7. Location=HKU\S-1-5-18\SOFTWARE\Microsoft\Windows\CurrentVersion\Run  
  8. SettingID=  
  9. User=NT AUTHORITY\SYSTEM  
  10.   
  11.   
  12. Caption=发送至 OneNote  
  13. Command=发送至 OneNote.lnk  
  14. Description=发送至 OneNote  
  15. Location=Startup  
  16. SettingID=  
  17. User=LAPTOP-FVJUV0KC\QIYOU  
  18. ======  
  19. schtasks /query /fo table /v  
3.系统信息排查
  1. 1)查看环境变量的TEMP  
  2. 2)查看Windows计划任务程序  
  3. 3)查看是否有隐藏用户,如admin$  
  4. 4)查看当前系统用户的会话:query user  
  5. 踢出会话用户:logoff会话序列顺序号  
  6. 5)查看systeminfo信息,系统版本以及补丁信息  

4.工具排查

  1. 1)PC Hunter  
  2. 2)Procexp进程查看工具  
  3. 3)Microsoft Network Monitor  
5.日志排查
  1. 1)系统日志  
  2. 2)应用程序日志  
  3. 3)安全日志  
  4. 若安全日志被黑客删除,可以查看RemoteConnectionManager日志  
6.后门排查
  1. 1)粘滞键和轻松访问等后门  
  2. 2)ADS数据流隐藏  

二.LINUX应急响应

1.文件排查

1)敏感临时/tmp目录,可执行程序目录/usr/bin /usr/sbin

  1. #ls -alt /tmp  
  2. (ls -alt dir)  

2)查看本机启动项

  1. ls -alt /etc/init.d  

3)stat查看文件创建事件和修改时间,确认是否被篡改

4)查看历史命令记录:

  1. cat /root/.bash_history | more  

5)查看操作用户信息:

  1. cat /etc/passwd  

6)查看最近新增文件 通过man find可以查看使用方法

  1. find ./ -mtime 0 -name "*.*" (查找24小时内被修改的php文件)  
  2. find / -ctime 2 (查找72小时内新增的文件)  

PS:-ctime内容未改变权限改变时候也可以查出 常见查找webshell命令

  1. find /var/webroot -name "*.php" | xargs grep 'eval|shell_exec|system|pasthru' | more  

7)特殊权限的文件查看 如查看777特权的文件:

  1. find / *.jsp -perm 777  

8)查看隐藏的文件(以"."开头的具有隐藏属性的文件)

  1. ls -ar | grep "^\."  
  2. PS:grep是使用正则匹配,“^\."匹配开头为”.“的文件  

9)查看分析任务计划

  1. crontab -u <-l,-r,-e>  
  2. -u指定一个用户  
  3. -l列出某个用户的任务计划  
  4. -r删除某个用户的任务  
  5. -e编辑某个用户的任务(编辑的是/var/spool/cron下对应用户的cron文件,也可以直接修改/etc/crontab文件)  
2.进程排查

1)netstat分析可疑端口、IP、PID及程序进程

  1. netstat -anlp | more  

查看建立侦听的连接,使用ps命令分析进程

  1. ps aux | grep pid  

2)隐藏进程查看

  1. [root@mysql01 ~]# ps -ef | awk '{print $2}' | sort -n | uniq>1  
  2. [root@mysql01 ~]# ls /proc | sort -n | uniq >2  
  3. [root@mysql01 ~]# diff 1 2  
  4. 1c1,58  
  5. < PID  
  6. ---  
  7. > acpi  
  8. > asound  
  9. > buddyinfo  
  10. > bus  
  11. > cgroups  
  12. > cmdline  
  13. > consoles  
  14. > cpuinfo  

3)ps进程的时候,有可能命令较长,被终端截断的可能性。存在空格超长截断命令,进而隐藏进程,需排查一下。

3.日志排查

1)重要日志

  1. 登录失败记录:/var/log/btmp  //lastb  
  2. 最事一次登录:/var/log/lastlog  //lastlog  
  3. 登录成功记录:/var/log/wtmp  //last  
  4. 登录日志记录:/var/log/secure  
  5. 目前登录用户信息:/var/run/utmp  //w/who/users  
  6. 历史命令记录:history  
  7. 仅清理当前用户:history  

2)位于多少IP在爆破主机的root账号

  1. [root@mysql01 ~]# grep "Failed password for root" /var/log/secure | awk '{print$11}' | sort |uniq -c | sort -nr | more  
  2. [root@mysql01 ~]  

3)登录成功的IP有哪些

  1. [root@mysql01 ~]# grep "Accepted" /var/log/secure | awk '{print$11}' | sort |uniq -c | sort -nr | more  
  2.       2 10.128.30.164  
  3. [root@mysql01 ~]  

4)查询访问量前十的IP地址

  1. cat access.log | cut -f 1 -d '' | sort | uniq -c |sort -k 1 -n -r | head -10  

5)查询访问量前十的URL

  1. cat access.log | cut -f 7 -d "" | sort | uniq -c |sort -k 1 -n -r | head -10  

6)统计访问量前十QPS的时间点

  1. cat access.log | cut -f 4 -d ''  uniq -c |sort -k 1 -n -r | head -10  

7)查看数据库的查询操作

  1. 如mysql的/var/log/mysql  
  2. 查询关键词:  
  3. cat mysql.log |grep union  
4.系统信息排查

1)查看分析history

  1. cat /root/.bash_history  

2)分析用户的账号权限

  1. [root@mysql01 ~]# cat /etc/passwd | grep -E "/bin/bash$"  
  2. root:x:0:0:root:/root:/bin/bash  
  3. moonrong:x:1000:1000:moonrong:/home/moonrong:/bin/bash  
  4. [root@mysql01 ~]  

3)查看开机启动项

  1. [root@mysql01 ~]# ls -alt /etc/init.d/  
  2. 总用量 40  
  3. drwxr-xr-x.  2 root root    70 11月  6 09:06 .  
  4. drwxr-xr-x. 10 root root   127 11月  6 09:06 ..  
  5. -rw-r--r--.  1 root root  1160 4月   1 2020 README  
  6. -rw-r--r--.  1 root root 18281 8月  19 2019 functions  
  7. -rwxr-xr-x.  1 root root  4569 8月  19 2019 netconsole  
  8. -rwxr-xr-x.  1 root root  7928 8月  19 2019 network  

4)检查shell的配置文件.bashrc和.bash_profile等文件是否有恶意的alias问题

  1. /etc/profile:此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行,并从/etc/profile.d目录的配置文件中搜集shell的设置。  
  2. /etc/bashrc:为每一个运行bash shell的用户执行此文件,当bash shell被打开时,该文件被读取。  
  3. .~/.bash_profile:每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次。默认情况下,它设置一些环境变量,执行用户的.bashrc文件。  
  4. ~/.bashrc:该文件包含专用于你的bash shell的bash信息,当登录时以及每次打开新的shell时,该文件被读取。  
  5. ~/.bash_logout:当每次退出系统(退出bash shell)时,执行该文件。  

5)系统路径分析

  1. [root@mysql01 ~]# echo $PATH  
  2. /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin  
  3. [root@mysql01 ~]  
5.后门排查

1)分析sshd文件,是否包括IP信息

  1. strings /usr/bin/.sshd | grep '[1-9]{1,3}.[1-9]{1,3}.'  

PS:strings命令在对象文件或二进制文件中查找可打印的字符串。

2)查看ssh相关目录有无可疑的公钥存在 Redis(6379)未授权恶意入侵,即可直接通过redis到目标主机导入公钥 目录:/etc/ssh ./.ssh/

3)使用chkrootkit是用来监测rootkit是否被安装到当前系统中的工具。

  1. #检测是否被植入后门、木马、rootkit  
  2. #检测系统命令是否正常  
  3. #检测登录日志  

4)使用Rkhunter进行排查

系统命令(Binary)检测,包括MD5校验、Rootkit检测、本机敏感目录、系统配置、服务等异常检测、三方应用版本检测。PS:Rkhunter是Linux系统平台下的一款开源入侵检测工具,具有非常全面的扫描范围,除了能够检测各种已知的rootkit特征码以外,还支持端口扫描、常用程序文件的变动情况检查。

5)Webshell检查 Webshell的排查可以通过文件、流量、日志三种方式进行分析,基于文件的命名特征和内容特征,相对操作性较高,在入侵后应急过程中频率也比较高。a)Webshell的排查可以通过可根据webshell特征进行命令查找,简单的可使用(当然会存在漏报和误报)

  1. find /var/www/ -name "*.php" | xargs egrp 'assert|phpspy|c99sh|milw0rm|eval|(gunerpress|\  
  2. (base64_decoo|code|spider_bc|shell_exec|passthru|\((\$\_\POST\[|eval \(str_rot13|\.chr\(|\$\{\"\_P|eval\(\$\_R|file_put_contents\(\.\*$\_|base64_decode'  

b)Github上存在各种版本的webshell查杀脚本,各有各的自己的特点,可使用河马shell查杀 (shellpub.com)

6)手工Webshell排查

  1. find /var/www/html/ -type f -name '*.php'|xargs grep 'eval' | more  

7)D盾查杀

8)执行命令strace -e access,open id,可看到strace命令id的时候,可以发现有预先去读取/etc/ld.so.preload文件(也可使用设置LDPRELAOD环境变量方式),如果我们事先写好的恶意so文件位置写入ld.so.preload文件,这时就会达到劫持的效果。通过strace命令去跟踪预加载的文件是否为/etc/ld.so.preload,以及文件中是否有异常的动态链接库。以及检查是否设置LDPRELOAD环境变量等。

9)命令被劫持,不能正常运行命令。可疑使用busybox作为替代。

10)查找SUID的程序

  1. find / -type f -perm -04000 -ls -uid 0 2 > /dev/null  
6.对应措施

通过chkrootkit、rkhunter、Webshell check等手段得出以下对应措施:
1)根据进程、连接等信息关联的程序,查看木马活动信息。
2)假如系统的命令(例如netstat、ls等)被替换,为了进一步排查,需要下载一新的或者从其他未感染的主机拷贝新的命令。
3)发现可疑可执行的木马文件,不要急于删除,先打包备份一份。
4)发现可疑的文本木马文件,使用文本工具对其内容进行分析,包括回连IP地址、加密方式、关键字(以便扩大整个目录的文件特征提取)等。

moonrong
  • 版权声明:本站原创文章,于2022年2月24日13:38:52,由 发表,共 6119 字。
  • 版权声明: 本文由于2022年2月24日13:38:52 发表在 好派笔记,共 6119 字。

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: