应急响应流程总结

Windows

开机启动文件检测

有些病毒木马喜欢藏在系统文件里,开机后会随着系统文件的启动而自动运行木马程序。

1、查看启动菜单:

C:\Users\leo\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
image-20210311160934518

2、运行执行msconfig命令

image-20210311162819561
image-20210311162827799

3、查看注册表自启动配置

Win10自启动注册表如下:

计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
image-20210311164447411

win7自启动注册表如下:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
image-20210311164655318

4、检查服务自启动

在运行输入services.msc查看服务启动状态

Temp临时文件异常

有些PE(exe,dll,sys)文件会隐藏在Temp文件目录里,还有一些比较大的TMP文件,这些都是比较可疑的,需将这些可疑的文件发到检测病毒的网站进行检测

Temp文件目录:

C:\Users\leo\AppData\Local\Temp

可以在运行里搜索%temp%直接跳转到temp目录

浏览器信息分析

可以通过分析浏览器里的一些信息来判断服务器是否被黑客入侵了

1、分析浏览器的浏览记录

可以使用browserhistoryview工具进行查看

2、分析浏览器的下载记录

可以使用browserdownloadview工具进行查看

image-20210311195616468

可以使用IEcookieview工具进行查看

image-20210311195928720

文件时间属性分析

文件的创建时间永远是早于或等于修改时间,如果修改时间早于创建时间,就说明该文件十分可疑,因为webshell管理工具是可以修改文件的修改时间

文件打开时间分析

Recent目录里含有最近打开过的文件,看看此目录下是否有可疑的文件,Recent目录地址如下

在运行输入%UserProfile%\Recent来打开

C:\Users\leo\Recent
image-20210311204617707

在cmd使用find命令可以快速查询到含有指定内容的文件

image-20210311205843118

分析可疑进程

如果计算机被种植了木马,那么木马肯定会与外部进行通信,每一次通信都会有不同的端口,可以通过网络连接状态来查找到木马的程序,以下是对进程操作的cmd命令。

netstat -ano | find "ESTABLISHED" 查看已建立的网络连接,可以通过非寻常的端口来确认可疑程序,443,80端口大部分都为正常,特别要注意那些不寻常的端口

image-20210312103628660

tasklist /SVC | find "12760" 列出指定pid的任务进程,/svc是列出此进程调用的服务

taskkill /pid 12760 /F /T 强制终止指定pid进程

image-20210312104301459

分析Windows计划任务

黑客会经常给受害机设置计划任务来维持木马的运行

创建任务计划的命令如下:

schtasks /create  /tn test /sc DAILY /st 23:18 /tr C:\\beacon.exe /F    
image-20210312121541965
image-20210312124712070

通过任务计划程序(可视化界面)查看

image-20210312125521288
image-20210312125525576

检查账号安全

分析服务器账号

检查服务器是否存在弱口令,远程端口是否对外开放

查看服务器是否存在可疑账号以及新增账号,可以通过cmd命令:lusrmgr.msc进行查看

分析日志,打开时间查看器,可以在运行输入eventvwr.msc打开时间查看器,当然也可以使用微软的LogParser进行分析日志

分析隐藏账户

在计算机建立隐藏账户来维持对其的控制权限,使用net user命令也查询不到隐藏账户,以下是建立隐藏账户的cmd命令,你可以在用户管理界面将隐藏账户进行删除或者修改其权限

net user test$ qQ123456 /add     //添加隐藏账户test

net user localgroup administrators  test$ /add    //将test账户权限提升至管理员
image-20210313104740713

黑客还可以利用注册表新建账户,这种更难被察觉到,以下利用hideadmin工具针对注册表创建隐藏用户。

image-20210313125522876

HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account\Users为注册表用户所在目录

注意:要进入此目录需要给SAM目录给予权限

image-20210313130403349

进入目录后寻找隐藏账户并且将其删掉,注意:需删除两个目录

image-20210313130646856

分析恶意进程

使用process exploer工具可以对任务管理器进程进行分析,可以直接将可疑进程发送到病毒检测网站进行检测,随后进行删除操作。

image-20210313225456817
image-20210313225503320

检查系统更新与补丁

执行cmd命令systeminfo查看系统已安装补丁,也可以查看控制面板程序的已安装更新面板来查看补丁。win10直接在设置里的更新与安全进行查看更新。

image-20210313232915265
image-20210313233126946

Windows审核策略

本地审核策略

若系统出现问题,即可查询到日志信息或追踪入侵者。

image-20210314094706750

Windows日志筛选

通过筛选功能可以更方便查询到指定的事件内容,不同的事件ID对应不同的事件操作

4624
4625
4634
4647
4672

登录成功

登录失败

注销成功

用户启动的注销

超级用户(管理员)登录

image-20210314101710690
image-20210314101805567

使用管理员账户远程登录主机时,主机会出现以下的事件ID

4776
4648
4624
4672

凭据验证

凭据登录

登录成功

超级用户登录

image-20210314103832804

在入侵提权过程中,黑客一般都会利用net user或者net localgroup语句创建用户,日志记录的事件ID为:4732,4722,4724

4732
4724
4722

添加用户

重置用户密码

启用用户账号

image-20210314105015010
image-20210314105028667

映像劫持

简单来说就是打开了程序A,而却运行了程序B

利用修改注册表的方式实现映像劫持, 下面列举两种不同的劫持姿势

劫持步骤

1、旧方式劫持

此处演示的案例是五次shift键触发后门,Optionssethc.exe为五次shift键触发程序

按五次shift键后并不会执行原程序,而是会执行我们设置的后门程序calc.exe

reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\Optionssethc.exe" /v debugger /t REG_SZ /d "c:\windows\system32\calc.exe"
image-20210323105511164

2、新方式劫持

按五次shift键后会执行原程序, 原程序关闭后执行后门程序calc.exe

将MonitorProcess 的值修改成后门程序的地址

reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\Optionssethc.exe" /v GlobalFlag /t REG_DWORD /d 512

reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SilentProcessExit\notepad.exe" /v ReportingMode /t REG_DWORD /d 1

reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SilentProcessExit\notepad.exe" /v MonitorProcess /t REG_SZ /d "c:\windows\system32\calc.exe"

劫持的应急

查看以下两个注册表目录,看看有没有可疑的东西

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SilentProcessExit

如下图所示, 这种目录就是可疑目录, 可直接删除IFEO(Image File Execution Options)项或者设置管理员不可修改

image-20210323145543705
image-20210323145724728

分析系统日志,日志ID为3000和3001,即有可能存在后门威胁。

定义恶意进程

使用OpenArk来定位CS恶意进程,首先通过网络流量来识别

LINUX

分析敏感文件或目录

TMP临时目录

tmp目录是一个放置临时文件的目录,普通用户对其目录内的文件都具有读写的权限,因此tmp目录通常用于提权

image-20210314114603377

开机自启动文件分析

查看自启动文件:ls -alh /etc/init.d/ (-h显示文件大小)

image-20210314143353499
image-20210314143734932
image-20210314143836024

查询敏感文件

以下是常用到的find命令:

查询一些敏感的文件后缀名, 例如php, aspx, jsp等webshell常用后缀

find ./ mtime 0 name "*.php"   //查找24小时内修改过的指定文件 mtime(修改时间) 0表示24小时
find ./ ctime -2 name "*.php"  //查找72小时内生成的指定文件  ctime(创建时间) 
find ./ iname "*.php*" -perm 777   //查找权限为777的指定文件  iname表示不区分大小写 perm表示权限
image-20210314151226666

分析可疑进程

分析网络连接

常用命令:

netstat -pantl ,列出TCP相关的服务连接。

netstat -pantl | grep "ESTABLISHED",查看已建立的TCP服务连接。

以下是netstat的使用参数

-a (all)显示所有选项,默认不显示LISTEN相关
-t (tcp)仅显示tcp相关选项
-u (udp)仅显示udp相关选项
-n 拒绝显示别名,能显示数字的全部转化成数字。
-l 仅列出有在 Listen (监听) 的服務状态

-p 显示建立相关链接的程序名
-r 显示路由信息,路由表
-e 显示扩展信息,例如uid等
-s 按各个协议进行统计
-c 每隔一个固定时间,执行该netstat命令。

对进程文件分析

以下是常用到的linux命令

  • ps -aux :列出所有的进程

  • ps -aux | grep pid:列出指定pid的进程

  • lsof -i:端口号:列出指定端口的进程

  • kill -9 pid : 关闭指定pid进程

image-20210314162329239
image-20210314162521580

分析异常登录

在linux的操作都会被记录在系统日志中,可以通过查询日志信息判断是否有异常登录

last -i | grep -v 0.0.0.0 : 查询非本地登录的日志信息,-i表示IP

image-20210314212758996

w命令 : 实时查看登录日志

image-20210314212907724

分析异常用户

提权root用户实操

新建用户,随后修改用户uid为0, 以此获取root权限

useradd test

passwd test {输入密码}

vim /etc/passwd    //修改用户uid为0
image-20210314214906589
image-20210314215029548

排查异常用户

grep "0:0" /etc/passwd : 查找root权限用户

image-20210314215319016

ls -l /etc/passwd : 查看用户文件最近修改时间

image-20210314215439983

awk -F: '$3==0 {print $1}' /etc/passwd : 查看root权限用户

image-20210314220245795
image-20210314220649652

awk -F: '$2=="!" {print $1}' /etc/shadow : 查看空密码用户

image-20210314232657919

禁用以及删除可疑账号

usermod -L user   //禁用帐号,帐号无法登录

userdel user    //删除

userdel -r user   //将删除user用户,并且将/home目录下的user目录一同删去

分析历史命令

linux系统之前执行的命令会保存在/root/.bash_history文件中,以下是查看history的命令。

cat /root/.bash_history

image-20210315094833306

history

image-20210315095027717

**常见的可疑历史命令:**wegt(远程下载)、ssh(连接内网)、tar zip(压缩打包)

特别要注意, 有些黑客还会修改你的系统命令,例如把netstat命令给改成别的了,从而导致无法使用此命令

分析计划任务

crontab命令排查计划任务

crontab -l    //列出计划任务

crontab -r	  //删除计划任务

crontab -e    //编辑计划任务
image-20210315104954846
image-20210315105125154

anacron命令实现异步定时任务调度

vi /etc/anacrontab  

@daily   10   example.daily  /bin/bash /home/shell.sh  //每天机器开机十分钟之后运行shell.h。

排查定时任务

使用more命令查询以下目录,重点查询/etc/cron.d/*目录

/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/*

分析开机自启动项

设置开机自启动

ls /etc/init.d/ 查看开机自启动文件

update-rc.d apache2 enable 设置apache2服务开机自启动

通过创建软连接设置自启动,将脚本文件放在/etc/init.d目录下,然后在/etc/rc.d/rc*.d中建立软连接即可。

S100ssh是sshd脚本的软连接,S表示运行级别加载时自启动,K则表示加载时需关闭

ln -s /etc/init.d/sshd /etc/rc.d/rc3.d/S100ssh   

ln -s /etc/init.d/sshd /etc/rc.d/rc3.d/K100ssh

关闭开机自启动

update-rc.d apache2 disable 取消apache2服务开机自启动

排查启动项文件

more /etc/rc.local 

more /etc/rc.d/rc[0~6].d

ls -l /etc/rc.d/rc3.d/

分析服务自启动项

修改服务自启动

1、使用chkconfig命令(红帽linux)

命令参数:chkconfig [--level 运行级别][独立服务名][on|off]

chkconfig –level  2345 httpd on  //自动启动http服务

chkconfig httpd on  //若没填写level参数,默认值为2345

2、修改/etc/rc.local文件,加入 /etc/init.d/httpd start

image-20210405170744411

3、使用ntsysv命令管理自启动,该命令适用于红帽linux

入侵排查

chkconfig --list   //查看服务自启动状态,可以看到所有的RPM包安装的服务

ps aux | grep crond    //查看当前服务

查看3与5级别下的启动项

chkconfig --list | grep "3:启用|5:启用"  //中文环境下

chkconfig --list | grep "3:on|5:on"  //英文环境下

$PATH变量异常

$PATH就是环境变量,分析是否有异常环境变量

echo $PATH : 输出环境变量目录

image-20210315111917868

export PATH=$PATH:/usr/lol/theshy 添加环境变量,临时有效,重启无效

image-20210315112547680

vim /etc/profile,随后添加export PATH=$PATH:/usr/lol/faker,再source /etc/profile。这个是永久修改$PATH变量的方法

image-20210315141737842
image-20210315141909806

系统日志分析

日志存放位置

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

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

日志文件
说明

/var/log/cron

记录定时任务日志

/var/log/cups

记录打印信息日志

/var/log/mailog

记录邮件信息日志

/var/log/message

记录系统重要信息日志,若出问题,首先检查该日志

/var/log/btmp

记录错误信息日志,二进制文件,要用lastb命令查看

/var/log/lastlog

记录所有用户最后一次登录时间日志,二进制文件

/var/log/wtmp

记录所有用户的登录、注销信息,同时记录系统的启动、重启等事件,是个二进制文件

/var/log/utmp

记录当前登录用户信息,会随着用户注销而不断变化,只能通过w,who,users命令查看

日志分析技巧

==注意:Centos系统登录日志记录在/var/log/secure,Ubuntu系统登录日志记录在/var/log/auth.log。==

1、分析爆破root账户的ip相关信息

查看爆破root用户的IP数量

grep "Failed password for root" /var/log/secure | awk '{print $11}' | sort | uniq -c | sort -nr | more 

查看爆破的IP以及时间

grep "Failed password" /var/log/secure|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" /var/log/secure|perl -e 'while($_=<>){ /for(.*?) from/; print "$1\n";}'|uniq -c|sort -nr

2、分析登录成功的ip

查看所有的登录成功的ip

grep "Accepted " /var/log/secure | awk '{print $11}' | sort | uniq -c | sort -nr | more

查看登录成功的ip,用户及日期

grep "Accepted " /var/log/secure | awk '{print $1,$2,$3,$9,$11}'

3、查看用户操作的日志

grep "useradd" /var/log/secure   //查看“useradd”命令的操作日志

grep "userdel" /var/log/secure   //查看“userdel”命令的操作日志

rkhunter工具使用

rkhunter工具会自动为我们排查linux系统的安全隐患

安装工具:apt-get install rkhunter

常用命令:rkhunter --check --sk //--sk表示自动补全

image-20210315143624226
image-20210315143820424

安全加固

阻止非root用户登录

touch /etc/nologin

给密码文件设置权限

chmod命令的使用可以看我linux专栏的文章,这里不过多解释

chmod 644 /etc/passwd

chmod 600 /etc/shadow

chmod 644 /etc/group

修改文件默认权限

umask=027

给日志或其他重要文件加固

chattr +a /var/log/messages    //设置此文件只能追加数据

chattr +i /var/log/messages.*  //设置文件不能被修改且删除

chattr +i /etc/shadow          

chattr +i /etc/passwd 

chattr +i /etc/group 

屏蔽banner信息

vi /etc/ssh/sshd_config   将banner设置成NONE
image-20210315165228330

增强秘钥

authconfig --passalgo=sha512 --update  //启用 SHA512 替代 MD5加密

限制登录次数

auth required pam_tally2.so deny=3 unlock_time=5 even_deny_root root_unlock_time=120  
//登录三次后锁定账户,普通用户5秒后解锁,root用户120秒后解锁

设置历史命令最大保存条数

vim /etc/profile,修改HISTSIZE为20(默认是1000)

image-20210315173231937

应急响应案列

勒索病毒

处理方式

勒索病毒是无解的,要是被感染了基本上很难恢复数据,所以说备份数据很重要

上传被加密的文件至360病毒分析网站,网站如下

http://lesuobingdu.360.cn

有一些简单的勒索病毒或许可以进行解密,以下是解密的网站

https://www.nomoreransom.org/zh/index.html

安全防范

  1. 安装杀毒软件,保持监控开启,定期全盘扫描

  2. 及时更新 Windows 安全补丁,开启防火墙临时关闭端口,如 445、135、137、138、139、3389 等端口

  3. 及时更新 web 漏洞补丁,升级 web 组件

  4. 备份。重要的资料一定要备份,谨防资料丢失

  5. 强化网络安全意识,陌生链接不点击,陌生文件不要下载,陌生邮件不要打开

挖矿病毒(Windows)

一些计算机若被挖矿病毒感染了,大部分都会出现cpu负载率过高,有些挖矿病毒还可以通过类似永恒之蓝等漏洞,或者服务器爆破进行横向渗透内网,感染其他主机

处理方法:

通过任务管理器确定CPU占用高的程序

image-20210402160800966

使用wmic命令列举所有进程的命令行参数并将其导出至tmp.txt

通过分析下图可知,有异常程序通过powershell远程执行目标网址的命令

wmic process get caption,commandline /value >> tmp.txt  
image-20210402161653294

通过访问指定网站,发现其内容是一些powershell命令,分析可得是在tmp目录创建挖矿木马

image-20210402163745517
image-20210402163814304

你也可以用wmic命令列出指定进程的命令行参数

wmic process where caption=”svchost.exe” get caption,commandline /value

随后清除挖矿木马,对全盘进行杀毒扫描,及时更新补丁,开启防火墙。

SSH爆破(Linux)

1、22端口异常连接

通过查看端口连接信息,发现22端口存在可疑的连接

image-20210407144451752

2、应急响应流程

分析特权用户

awk -F: '$3==0 {print $1}' /etc/passwd`   //查看除root用户外其他特权用户
awk '/$1|$6/{print $1}' /etc/shadow   //查看可远程登录的用户账号信息

分析爆破信息

//查看爆破者ip以及爆破次数

grep "Failed password for root" /var/log/secure | awk '{print $11}' | sort | uniq -c | sort -nr | more 
//查看爆破攻击的时间范围


grep "Failed password" /var/log/secure|head -1  

grep "Failed password" /var/log/secure|tail -1
//查看爆破攻击所用到的字典

grep "Failed password" /var/log/secure|perl -e 'while($_=<>){ /for(.*?) from/; print "$1\n";}'|uniq -c|sort -nr

分析管理员登录情况

//查看登录成功的ip以及日期

grep "Accepted " /var/log/secure | awk '{print $1,$2,$3,$9,$11}'

3、防护措施

  • 禁止公网开放管理端口,若确实需要开放,则需限定IP以及加强密码的组成

  • 更改服务器ssh的默认端口

  • 部署入侵检测设备,例如安全厂商的防火墙之类的

短连接捕捉(Linux)

简介

相对长连接而言,指的是在数据传送过程中,只需要发送数据时间,才会去建立一个连接,数据发送完毕后则断开连接,这样的短连接对于系统维护来说是很难被察觉到的

管理员在出口waf检测到服务器不停向外部发送请求,进入服务器发现短连接进程。

img

应急处理

手动捕捉是很麻烦的,所以可以通过脚本进行捕捉进程,将下面脚本的ip值设置成短连接的外部ip

#!/bin/bash
ip=118.184.15.40
i=1
while :
do
   tmp=`netstat -anplt|grep $ip|awk -F '[/]' '{print $1}'|awk '{print $7}'`
   #echo $tmp
   if test -z "$tmp"
   then
       ((i=i+1)) 
   else
       for pid in $tmp; do
           echo "PID: "${pid}
          result=`ls -lh /proc/$pid|grep exe`
          echo "Process: "${result}
          kill -9 $pid
       done
       break
   fi 
done
echo "Total number of times: "${i}

运行结果如下,可以发现短连接的进程pid一直在变,进程源文件也被捕捉到了:/usr/lib/nfsiod

img

挖矿病毒(Linux)

应急场景

某台网站服务器持续向境外ip发起连接下载病毒源

应急处理

查看网络进程连接状态,发现远程下载一个jpg文件

img
img

分析下载的jpg文件可以发现,里面包含了执行代码,可以判断攻击者通过远程下载脚本图片并执行了图片里的脚本代码

img

分析定时任务计划,发现攻击者在添加了一项计划任务

img

在tomcat日志文件中找到一条记录,发现攻击代码和计划任务里的一致

img

删除木马的定时任务,以及终结异常进程

img
img

盖茨木马

盖茨木马简述:

Linux盖茨木马是一类有着丰富历史,隐藏手法巧妙,网络攻击行为显著的DDoS木马,并且会伪装成系统文件。木马得名于其在变量函数的命名中,大量使用Gates这个单词。

应急场景

发现服务器cpu占用异常,发现有几个进程占用大量的网络带宽

img

最后更新于