1.应急响应介绍
2.Linux和Windows入侵排查方法
3.Linux应急案例
4.Windows应急案例之页面篡改
5.溯源排查之道
6.日志分析
# 应急响应流程
## 1.沟通
# 联系客户,咨询当前服务器状态,发生的准确时间点,服务器上有什么业务,提供异常截图,事件
发生后有木有做过处理,做了哪些处理,之前有没有发生过安全事件,是否有完整的日志,服务器上是否存在安全设备。
## 2.确认
# 初步了解服务器相关信息,要求客户对服务器的重要数据进行备份,然后提供给我们应急服务器的账号密码,如果服务器上存在对应的web服务,需要提供对应的web域名,整理客户描述的信息,进行初步确认,判断是不是安全事件,切不可盲目相信他人所述,如果是安全事件提供对应的止损方案
## 3.深入分析
# 分析服务器上的进程,网络连接,计划任务,日志,查找异常项,帮助客户恢复服务器正常状态,刻画攻击路径
## 4.沟通
# 保持跟客户的持续沟通,不要让客户感觉你没有在处理事件,及时同步处理进展,有不知道的信息就
主动问客户获取,客户提供越多信息,对我们完成应急越有帮助
## 5.总结
# 整理并输出完整的应急报告
# 注意事项
# 1.由于应急需要注意时效性,客户一般都是非常着急的,尽可能快速定位到问题,
解决问题才是最重要
# 2.止损第一
# 3.不要造成二次伤害
# 应急响应整体思路
# 1.应急响应的整体思路,就是上层有指导性原则的思路,下层有技能,知识点与工具,
共同推进和保障应急响应流程的全生命周期
'''
应急响应 https://www.freebuf.com/articles/terminal/192859.html
3W1H:W - Who,What,Why 1H - How 做应急响应要带着疑问来做事情,一定要收集清楚这些信息。网络拓扑是怎么样的,需求是啥,发生了是事情,能做什么,用户用了什么产品,产品版本多少,病毒版本是多少,多少主机中了,主机是普通PC还是服务器,服务器是做什么的 ..... 信息收集的越多,对应急响应越有利
易失性原则:做应急响应免不了要做信息收集和取证的,但这里是有一定的先后顺序的,即最容易丢失的证据,应该最先收集,其它的依次类推
要素原则:做应急响应,主要是抓关键证据,即要素,这些要素包括样本,流量,日志,进程及模块,内存,启动项
避害原则:要做到趋利避害,不能问他还没有解决,反而引入了新的问题,譬如,自己使用的工具被感染而不知情,给用户使用不恰当的工具或软件造成客户主机出现问题,给别人发样本,不加密,不压缩,导致别人误点中毒,最极端的场景就是给别人发勒索样本不加密压缩,导致别人误点中毒
'''
# 事件介绍
网络攻击事件:
* 安全扫描攻击:攻击者利用扫描器对目标进行漏洞探测,并在发现漏洞后进一步利用漏洞进行攻击
* 暴力破解攻击:对目标系统账号密码进行暴力破解,获取后台管理员权限
* 系统漏洞攻击:利用操作系统,应用系统中存在的漏洞进行攻击
* Web漏洞攻击:通过SQL注入漏洞,上传漏洞,XSS漏洞,等各种Web漏洞进行攻击
* 拒绝服务攻击:通过大流量DDoS或者CC攻击目标,使用目标服务器无法提供正常服务
* 其他网络攻击行为
恶意程序事件:
* 病毒,蠕虫:造成系统缓慢,数据损坏,运行异常
* 远控木马:主机被黑客远程控制
* 僵尸网络程序:(肉鸡行为):主机对外发起DDoS攻击,对外发起扫描攻击行为
* 挖矿程序:造成系统资源大量消耗
Web恶意代码:
* Webshell后面:黑客通过Webshell控制主机
* 网页挂马:页面被植入带病毒的内容,影响访问者安全
* 网页暗链:网站被注入博彩,色情,游戏等广告内容
信息破坏事件:
* 系统配置遭篡改:系统中出现异常的服务,进程,启动项,账号等等
* 数据库内容篡改:业务数据遭到恶意篡改,引起业务异常和损失
* 信息数据泄露事件:服务器数据,会员账号遭到窃取并泄露
其他安全事件:
* 账号被异常登录:系统账号在异地登录,可能出现账号密码泄露
* 支付盗刷
事件处理流程
* 一般像web攻击类安全事件,处理方法就是加WAF,增加攻击者的攻击成本,然后查找漏洞,修复漏洞
,如果是CMS漏洞,需要根据官方修复建议进行修复
* 挖矿类安全事件,先暂停挖矿进程,修改远程木马下载地址为本地host,然后排查处理
* 信息泄露类安全事件,要根据泄露数据样本判断是哪里存在漏洞,然后采取相应的措施
* 支付类安全事件,禁止支付密钥,关闭提现业务
总结:
* 沟通 - 》 确认 -》 异常发现与追踪 -》 事件处理 -》 事件总结
* https://mp.weixin.qq.com/s/H_ewge2jOCgFz-SelVFkUw
# Linux排查方法
* 系统完整性 rpm -Va
* 进程 top, ps -aux, lsof
* 网络连接 netstat -tunlpa
* 开机启动项 /etc/init.d/* /etc/rc*.d /etc/rc.local
* webshell查杀 河马webshell查杀 自动脚本
* 计划任务
- cat /var/log/cron | grep "bash"
- cat /var/log/cron | grep "wget"
- cat /var/log/cron | grep "cat"
- cat /var/log/cron | grep "id"
- cat /var/log/cron | grep -E -o "(([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3}))"
- cat /etc/crontab
- /var/spool/cron/*
- /etc/cron.d/
- /etc/cron.daily/
- /etc/cron.hourly/
- /etc/cron.weekly/
- /etc/cron.monthly/
* 查看登录情况
历史登录成功IP和账号,当前登录成功账号IP
cat /var/log/secure
last
* 查看ssh key
cat .ssh/authorized_keys
* 用户及hosts
/etc/passwd
/etc/hosts
* 查看动态链接库
echo $LD_PRELOAD
Linux预加载库
/etc/ld.so.preload
/usr/local/lib
查看每个命令加载的动态链接库
ldd `which top`
* 日志分析
Linux日志存放 /var/log/
/var/log/message 记录系统重要信息的日志,这个日志文件会记录Linux系统的绝大多数重要信息
/var/log/cron 记录系统定时任务相关日志
/var/log/btmp 记录错误登录日志,不能直接使用vi查看,需要使用lastb
/var/log/lastlog 记录系统中所有用户最后一次登录事件的日志,不能使用vi 使用lastlog
/var/log/secure 记录验证和授权方面的信息,只要设计账号和密码的程序都会记录,比如ssh 登录,su切换用户,sudo授权
- 定位有多少个IP爆破主机的root账号
grep "Failed password for root" /var/log/secure | awk '{print $11}' | sort | uniq -c | sort -nr| more
- 登录成功的IP有哪些
grep "Accepted " /var/log/secure | awk '{print $11}' | sort | uniq -c | sort -nr | more
# Windows 排查方法
* 系统状态排查 查看CPU 内存 网络占有率
* 文件分析
- 临时文件 黑客往往可能将病毒放在临时目录,或者将病毒相关文件释放到临时目录,因此需要检查临时目录是否存在异常文件。
假设系统盘在C盘,则通常情况下的临时目录如下:
C:\Users\\shit\Local Settings\Temp
C:\Documents and Settings\\shit\Local Settings\Temp
C:\Users\\shit\桌面
C:\Documents and Settings\\shit\桌面
C:\Users\\shit\Local Settings\Temporary Internet Files
C:\Documents and Settings\\shit\Local Settings\Temporary Internet Files
- 浏览器相对文件 黑客可能通过浏览器下载恶意文件,或者盗取用户信息,因此需要检查下浏览器的历史访问记录,文件下载记录,cookie信息,对应相关文件目录如下:
C:\Users\\shit\Cookies
C:\Documents and Settings\\shit\Cookies
C:\Users\\shit\Local Settings\History
C:\Documents and Settings\\shit\Local Settings\History
C:\Users\\shit\Local Settings\Temporary Internet Files
C:\Documents and Settings\\shit\Local Settings\Temporary Internet Files
- 最近文件 检查下最近打开了哪些文件,可疑文件有可能就在最近打开的文件中,打开一下这些目录即可看到:
C:\Users\\shit\Recent
C:\Document and Settings\shit\Recent
- 文件修改时间 可以根据文件夹内文件列表时间进行排序,查找可疑文件,一般情况下,修改时间越近的文件越可疑
- system32和hosts文件
System32也是常见的病毒释放目录,因此也要检查下改目录,hosts文件是系统配置文件,用于本地DNS查询的域名设置,可以强制将某个域名对应到某个IP上,因此需要检查hosts文件有没有被黑客恶意篡改
这里以hosts文件为例,如上图,检查3种异常:
1.知名站点,检查对应IP是否真的归属该站点,防止”钓鱼“
2.未知站点,检查该域名和IP是否恶意
3.无法访问的安全站点,即IP是否指向127.0.0.1 0.0.0.0等本地地址,无效地址
- 网络连接
使用命令 netstat -ano 查看当前的网络连接,排查可疑的服务,端口,外连的IP
如发现netstat定位出的pid有问题,可再通过tasklist命令进一步追踪该可疑程序(tasklist | findstr PID)
- 流量分析
流量分析可以使用wireshark 主要分析下当前主机访问了哪些域名,URL,服务,或者有哪些外网IP在访问本地主机的哪些端口,服务和目录,又使用了何种协议等等
例如:使用了Wireshark观察到,主机访问了sjb555.3322.org 这种动态域名,即可粗略猜测这是一个C&C服务器
- 漏洞与补丁信息
使用命令systeminfo ,查看系统版本信息以及补丁信息,确认当前系统是否存在漏洞,是否以及打了相应的补丁
- 进程分析
* 进程名字异常
* 进程信息分析
- 启动项排查
黑客为了保持病毒能够开机启动,登录启动或者定时启动,通常会有相应的启动项,这里有个非常好的工具,Autoruns(www.sysinternals.com)
- 用户排查
net user
- Tips
* 删除guest用户
- 按键 "win + r" 输入regedit打开注册表;
- 展开 "HKEY_LOCAL_MACHINE\SAM\SAM", 右键 "权限";设置管理员完全控制权限
- 关闭注册表,重新打开
"HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account\Users\Names\Guest"
- 将注册表对应的类似"0x2f3", 进行删除
"HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account\Users\000002f3"和
"HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account\Users\Names\Guest"这两个键即可
- 常用的工具和命令
Webshell查杀
D盾
深信服WebShellkiller
CloudWalker(牧云)
- 木马病毒类查杀
ClamAV
RKHunter
Chkrootkit
- 进程分析
火绒剑
- 流量分析
Wireshark
Tcpdump
- 启动项分析
Autoruns
- 其他辅助工具
IP分析
超级文件监控工具V1.0
# Linux木马案例(一)
* 系统完整性
rpm -Va
* 进程
lsof
ps aux
ps -ef
ps aux --sort=start_time
top
* 网络连接
netstat -tunlpa
* 开机启动项
/etc/init.d/*
/etc/rc*.d/
/etc/rc.local
ls -altr /etc/rc.local
* webshell查杀
河马webshell查杀
自写脚本
find / -ctime +1 -ctime -30
* 计划任务
ls -altr /var/spool/cron
ls -altr /etc/cron.daily/
ls -altr /etc/cron.weekly/
ls -altr /etc/cron.hourly/
ls -altr /etc/cron.monthly/
ls -altr /etc/crontab
* 查看登录情况
last
cat /var/log/secure* | grep "Access"
cat /var/log/secure* | grep "Fail"
* 查看key
cd /root/.ssh
cat authorized
* 用户及hosts
cat /etc/passwd
cat /etc/hosts
* 查看动态链接库
echo $LD_PRELOAD
strace -f ls
Linux预加载库
/etc/ld.so.preload
/usr/local/lib
* 木马处理
核心:找异常(尽可能多的找出异常)
lsof -f -p 3322
find -ctime +1 -ctime -7 | more
* 隐藏木马处理
使用busybox
busybox ps
1.rpm -Va
2.busybox ls -altr /etc/cron.d
发现存在root的计划任务
3.busybox cat /etc/cron.d/root
通过微步在线的威胁情报查询域名是否是恶意挖矿之类的域名
4.busybox ls -altr /etc/cron.daily/
5.busybox ls -altr /etc/cron.weekly/
6.busybox ls -altr /etc/cron.hourly/
7.busybox ls -altr /etc/cron.monthly/
8.busybox ls -altr /etc/crontab
9.busybox cat /etc/crontab
10.busybox ls -altr /var/spool/cron/
查看可疑的基础 top 如果查看不出来,那么使用busybox
busybox top
busybox ps aux
查看Linux动态链接库
busybox echo $LD_PRELOAD
根据lsof查看进程pid的位置
lsof -f -p 2290
可疑隐藏木马位置
计划任务,进程,文件,动态链接库
偷梁换柱
1.隐藏原理
* 通过替换系统中常见的进程查看工具(比如:ps top lsof)的二进制程序,导致原先查看进程相关信息的工具(ps,top,lsof)等都被掉包了
2.防护手段
* 从干净的系统上拷贝这些工具到备份至当前系统,对比前后的输出是否一致,不一致,则说明被替换了
* 检测这些工具的hash值是否与系统初始化的时候值不一致,如果是,则说明被替换了
* 专业一点的话,使用一些系统完整性检查工具,比如tripwrie,aide等
* 部署主机入侵检查工具(比如ossec),监控系统文件是否被替换,如有替换,则会报警记录
3.Hook系统调用型
隐藏原理
ps,top等工具的工作原理,以ps工作原理为例说明这些进程信息查看工具的原理
/proc 是一个虚拟文件系统,是VFS的一个实现形式,/proc中包含了内核信息
硬件信息,进程信息等,ps等工具就是通过分析/proc文件系统中进程相关目录的信息获取进程信息汇总,Hook系统调用型的进程隐藏方式都是通过拦截或者迷惑ps等工具从/proc获取分析结果的过程,而不是真的/proc文件系统生成本身。
ps首先会调用openat系统函数获取/proc目录的文件句柄,然后调用系统函数getdents递归获取/proc目录下所有文件信息(包括子目录),然后开始open函数打开/proc/进程pid/stat, /proc/进程pid/status, /proc/进程pid/cmdline 文件开始获取进程信息,然后打印给你看,攻击者通过劫持getdents 等系统调用函数或libc中的readdir函数,实现对特定进程名进程的隐藏,以达到进程隐藏的目的
劫持getdents等系统调用函数或libc中的readdir函数等系统调用一般来说3个途径
1. 修改内核调用,比如getdents的源码
2. 修改libc库中readdir函数的源码
3. 利用环境变量LD_PRELOAD 或者配置ld.so.preload文件以使得恶意的动态库先于系统标准库加载,以达到架空系统标准库中相关函数的目的,最终实现对特定进程的隐藏
Linux木马隐藏方式
* 防护手段
1.检查LD_PRELOAD环境变量是否有异常
2.检查ld.so.preload等配置文件是否有异常
3.写个python小工具,直接读取/proc中的内容,对比ps等工具的结果,如果对不上,则存在被劫持的可能
4.使用sysdig(有开源版,可以监控ps等的调用过程,观察是否有恶意动态库被加载,strace有类似功能) 或者
prochunter
* 伪造进程名类型
- 隐藏原理
在恶意代码中通过设置具有迷惑性的进程名字,以达到躲避管理员检查的目的
- 挂载覆盖型
利用mount -bind 将另外一个目录挂载覆盖至/proc/目录下指定进程ID的目录,我们知道ps,top等工具会读取/proc目录下的所有文件,获取进程信息,如果将进程ID的目录信息覆盖,则原来的进程信息将从ps的输出结果中隐匿
# Windows应急响应挂马篡改
* 挂马是指在获取网站或者网站服务器的权限后,在网页文件中插入一段恶意代码或者广告
常见的网页挂马方式有:
- iframe框架挂马,就是加iframe标签
- script挂马,通过各种方法加载js代码
- 图片挂马,伪装成图片,内容是恶意代码
- Global.asax挂马,篡改入口文件挂马
- IIS URL重写
- 修改dll挂马
* 检测网站挂马工具
- URL Snooper:URL嗅探工具,会自动抓取网站中的连接
- D盾:Windows下webshell检测工具
- 超级字符串批量替换工具:查找文件中是否包含特定字符
- 超级文件监控工具:监控目录下发生改变的文件
* 清除恶意代码
- 清除网站中的恶意代码首先需要知道哪些文件被挂马了,判断方法如下:
1.通过直接查看代码,从代码中找出挂马代码
2.通过查看网站目录修改时间,通过时间进行判断
3.工具监控,查找恶意代码