系列文章目录
Web网络安全-----红蓝攻防之信息收集
Web网络安全-----Log4j高危漏洞原理及修复
Shell分类详解(图形界面+命令行式)
Linux安全----应急溯源常用命令
记一次实战成功溯源反制getshell
文章目录
- 系列文章目录
- 一、应急响应概述
- 二、入侵排查
-
- 基本信息
- 用户信息
- 启动项
- 计划任务
- 系统进程
- 服务排查
- 文件痕迹
- 日志分析(Windows)
- 日志分析(Linux)
-
- 存放目录
- 记录登录进入、退出、数据交换、关机和重启,即last,是一个二进制文件,可以使用last查看
- 记录与定时任务相关的日志信息
- 记录系统启动后的信息和错误日志
- 记录Apache的访问日志
- 记录系统授权信息,包括用户登录和使用的权限机制等
- 记录所有等级用户信息的日志
- 记录linux FTP的日志
- 记录登录的用户,可以使用命令lastlog查看
- 记录大多数应用输入的账户和密码,以及登录成功与否
- 记录登录系统不成功的账号信息
- 查看邮件相关记录文件
- 可发现对80端口的攻击行为(当web访问异常时,及时向当前系统配置的邮箱地址发送报警邮件)
- 对linux系统日志分析主要使用 grep sed sort awk 等命令
- 查看多少行的日志文件
- *.log 日志文件中统计独立IP地址个数的命令
- 查找指定时间段日志的命令
- 日志分析排查(其它日志)
- 内存分析
- Redline
- Volatility
- 流量分析
- 威胁情报
- 总结
一、应急响应概述
事件级别
1、特别重大事件
红色预警、一级响应
2、重大事件
橙色预警、二级响应
3、较大事件
黄色预警、三级响应
4、一般事件
蓝色预警、四级响应
事件类型
1、应用安全
WebShell、网页篡改、网页挂马…
2、系统安全
勒索病毒、挖矿木马、远控后门…
3、网络安全
DDoS攻击、ARP攻击、流量劫持…
4、数据安全
如数据泄露、损坏、加密…
应急响应模型
1、准备阶段(Preparation)
• 应急团队建设
• 应急方案制定
• 渗透测试评估
• 安全基线检查
2、检测阶段(Detection)
• 判断事件类型
• 判断事件级别
• 确定应急方案
3、抑制阶段(Containment)
限制攻击/破坏波及的范围,同时也是在降低潜在的损失:
• 阻断:IP地址、网络连接、危险主机….
• 关闭:可疑进程、可疑服务……
• 删除:违规账号、危险文件….
4、根除阶段(Eradication)
通过事件分析找出根除源并彻底根除,以避免被再次利用:
• 增强:安全策略、全网监控….
• 修复:应用漏洞、系统漏洞、补丁更新……
• 还原:操作系统、业务系统……
5、恢复阶段(Reconvery)
把被破环的信息彻底还原到正常运作的状态:
• 恢复业务系统
• 恢复用户数据
• 恢复网络通信
6、总结阶段(Follow-up)
回顾并整合应急响应过程的相关信息,进行事后分析总结和修订安全计划、政策、程序,并进行训练,以防止入侵的再次发生:
• 事件会议总结
• 响应报告输出
• 响应工作优化
二、入侵排查
基本信息
-
Windows
msinfo32
systeminfo -
Linux
CPU信息
lscpu
操作系统信息
uname -a
cat /proc/version
模块信息
lsmod
用户信息
- Windows
排查恶意账户
net user
lusrmgr.msc(计算机管理 -> 本地用户和组 -> 用户)
注册表查看隐藏用户:运行 中输入 regedit,打开注册表编辑器,在HKEY_LOCAL_MACHINE下的 SAM 选项
查看计算机所有用户的 SID: wmic useraccount get name,sid
-
Linux
查看用户信息
cat /etc/passwd
分析超级权限账户
awk -F: '$3==0{print $1}' /etc/passwd
查看可登录的账户
cat /etc/passwd | grep 'bin/bash'
查看用户错误的登录信息
lastb
查看所有用户最后的登录时间
lastlog
查看用户最近登录信息
last
查看当前用户登录系统情况
who
启动项
-
Windows
通过“系统配置”对话框查看
msconfig
详细信息
HKEY_CLASSES_ROOT (HKCR)
登陆用户的配置信息
HKEY_CURRENT_USER(HKCU)
计算机硬件特定的信息
HKEY_LOCAL_MACHINE(HKLM)
所有用户配置文件的配置信息
HKEY_USERS(HKU)
存储有关系统当前配置的信息
HKEY_CURRENT_CONFIG(HCU) -
Linux
查看init.d 文件加下的rc.local 文件内容
cat /etc/init.d/rc.local
查看rc.local 文件的内容
cat /etc/rc.local
查看init.d 文件夹下所有文件的详细信息
ls -alt /etc/init.d
计划任务
-
Windows
视图
计算机管理 -> 系统工具 -> 任务计划程序 -> 任务计划程序库
在powershell下
Get-ScheduledTask
命令行
schtasks -
Linux
命令输入
crontab -l
crontab -u root -l
查看 /etc 目录下的任务计划文件
ls /etc/cron*
系统进程
-
Windows
通过任务管理器查看
查看进程与服务对应情况
tasklist /svc
对于某些DLL 恶意进程
tasklist /m
查看调用 ntdll.dll 模块的进程
tasklist /m ntdll.dll
(ntdll.dll是Windows操作系统中的一个核心组件,它将不同的功能模块集成在一起,包括核心的系统API、内存管理、异常处理、进程和线程管理等)
可以通 /fi 进行过滤
tasklist /svc /fi “PID eq 2820” (显示PID等于2820的正在运行的服务进程。)
查看当前网络连接
netstat -ano | findstr “ESTABLISHED”
通过netstat 定位出PID,通过tasklist 命令进行程序定位
wmic process get name,executablepath,processid|findstr pid(进程号)
wmic process where processid=602444 get processid,executablepath,name
快速定位到端口对应的程序(管理员权限)
netstat -anb
使用Powershell进行排查
get-wmiobject win32_process | select name,processid,parentprocessid,path
(用于获取Windows系统中所有进程的相关信息,并选择显示进程的名称(name)、进程ID(processid)、父进程ID(parentprocessid)和路径(path)。)
以csv格式显示数据
wmic process list full /format:csv
wmic查询
• wmic process get name,parentprocessid,processid /format:csv
• wmic process get executablepath,processid /format:csv
• wmic process where processid=2020 get executablepath,processid /format:csv
• wmic process where name=“httpd.exe” get executablepath,processid /format:csv -
Linux
显示所有的网络连接和监听端口
netstat -anptl
查看3364进程的可执行程序
ls -alt /proc/3364
查看进程打开的文件
lsof -p 3364
杀掉进程
kill -9 3364
删除可疑木马
rm -rf 木马文件
查看属性
lsattr 文件名
移除 i 属性
chattr -i 文件名
进程实时情况
top
服务排查
-
Windows
视图
打开”运行“,输入 services.msc 命令,可打开 “服务”窗口,查看所有服务项,包括服务名、描述、状态等 -
Linux
查看系统运行服务
chkconfig --list
所有服务的状态
service --status-all
文件痕迹
1.敏感目录
-
Windows
temp(tmp)相关目录
浏览器的历史记录,下载文件和cookie信息
查看用户Recent文件
C:\Users\Administrator\Recent、C:\Users\用户名\Recent,或者通过“运行”-> 输入“ recent ”
预读取文件夹查看
Prefetch文件夹的位置为 “%SystemRoot%\Prefetch\”,可以在”运行“对话框中输入prefetch 或者 %SystemRoot%\Prefetch\,或者打开:C:\WINDOWS\prefetch -
Linux
临时文件夹 /tmp
命令目录 /usr/bin、/usr/sbin等
存储SSH连接信息和配置文件的目录 .ssh
SSH服务器配置文件和密钥存储目录 /etc/ssh
2.时间点
对文件的创建时间、修改时间、访问时间进行排查
对于人工入侵的应急响应事件,有时攻击者会为了掩饰入侵行为,对文档的相应时间进行修改,以规避一些排查策略,比如攻击者可能通过”菜刀“这类工具修改时间,因此,如果文件的相关时间存在明显逻辑问题,就需要重点排查,很可能是恶意文件(比如创建时间为2021,修改时间为2018)
-
Windows
显示对 2021/11/27 后的创建的txt文件进行搜索
forfiles /m *.txt /d +2021/11/27 /s /p c:\ /c “cmd /c echo @path @fdate @ftime” 2>null
显示 2021//11/1 之后pptx名字包含”网络“的文件
forfiles /m *网络*.pptx /p f:\ /d +2021/11/1 /s /c “cmd /c echo @path @fdate @ftime” 2>null
显示 2021//11/27 后所有访问过的文件
forfiles /m *.* /p f:\ /d +2021/11/27 /s /c “cmd /c echo @path @fdate @ftime” 2>null -
Linux
查找块设备、目录、字符设备、管道、符号链接、普通文件
find -type b/d/c/p/l/f
按文件更改时间来查找文件,-n指 n天以内,+n指 n天前
find -mtime -n +n
按文件访问时间来查找
find -atime -n +n
按照文件创建时间来查找
find -ctime -n +n
查找在最近1天内被修改过的名字为.txt的文件
find / -ctime 0 -name “.txt"
查找3天内新增的txt文件
find / -ctime -3 -name “.txt”
查看当前目录下前10个文件或文件夹的详细信息。
ls -alt | head -n 10
对文件的创建时间、修改时间、访问时间进行排查
stat 文件名
3.Webshell
-
Windows
D盾
HwsKill
webshellKill -
Linux
特殊权限文件查找
find /tmp -perm 777
查找/var/www下所有php文件
find /var/www/ -name "*.php"
正则查找带有POST变量的 (/path/to/directory替换为要搜索的目录路径)
grep -rnE '$_POST\[[\'\"][a-zA-Z0-9_]+[\'\"]\]' /path/to/directory
对系统命令进行排查 (列出 /bin/ 目录下的所有文件和文件夹,并显示它们的详细信息)
ls -alht /bin/
工具
chkrootkit
rkhunter
排查SUID程序
('-uid 0’表示只查找那些属于root用户(用户ID为0)的文件。'2>/dev/null’是将错误输出重定向到空设备文件,这样就不会在终端显示任何错误信息。)
find / -type f -perm -04000 -ls -uid 0 2>/dev/null
日志分析(Windows)
Windos2003之前日志位置
• 系统日志:C:\Windows\System32\config\SysEvent.evt
• 安全性日志: C:\Windows\System32\config\SecEvent.evt
• 应用程序日志: C:\Windows\System32\config\AppEvnet.evt
Windos2008以后日志位置
• 系统日志为 C:\Windows\System32\winevt\Logs\System.evtx
• 安全性日志为 C:\Windows\System32\winevt\Logs\Security.evtx
• 应用程序日志为 C:\Windows\System32\winevt\Logs\Application.evtx
• 其他日志 在应急响应中经常也会用到 PowerShell 日志
Get-EventLog application | Export-Clixml –Path C:\PowerShell\applog.xml –Depth 2
(这段脚本将把应用日志的信息保存到C:\PowerShell\applog.xml文件之中。)
• 或者打开”运行“,输入 eventvwr.msc
日志常用事件ID
常用启动事件相关日志事件ID
日志被清除相关日志事件ID
powershell日志分析
1.只获取传统事件日志
查看所有日志列表:Get-EventLog -list
2.从传统事件日志和新windows 事件日志技术生成的事件日志中获取事件
查看所有日志列表:Get-WinEvent -ListLog *
获取安全性日志下事件ID为4625(失败登录)的所有日志信息
get-eventlog security -instanceid 4625
(需要有 Windows Vista、Windows Server 2008 或更高版本的 Windows 系统,以及 Microsoft .NET Framework 3.5 及以上的版本。)
日志工具
• FullEventLogView:是一款轻量级的日志检索工具,是绿色版、免安装的,检索速度比windows系统自带工具要快,展示效果好
• Event Log Explorer:检测系统安全的软件,可查看、监视和分析事件记录
• Log Parser :微软公司推出的日志分析工具,功能强大,使用简单
• 比如: LogParser.exe -i:EVT -o:DATAGRID “SELECT*FROM c:\Security.evtx where EventID=4624”
日志分析(Linux)
存放目录
/var/log/
记录登录进入、退出、数据交换、关机和重启,即last,是一个二进制文件,可以使用last查看
/var/log/wtmp
记录与定时任务相关的日志信息
/var/log/cron
记录系统启动后的信息和错误日志
/var/log/messages
记录Apache的访问日志
/var/log/apache2/access.log
记录系统授权信息,包括用户登录和使用的权限机制等
/var/log/auth.log
记录所有等级用户信息的日志
/var/log/userlog
记录linux FTP的日志
/var/log/xferlog(vsftpd.log)
记录登录的用户,可以使用命令lastlog查看
/var/log/lastlog
记录大多数应用输入的账户和密码,以及登录成功与否
/var/log/secure
记录登录系统不成功的账号信息
/var/log/faillog
查看邮件相关记录文件
ls -alt /var/spool/mail
可发现对80端口的攻击行为(当web访问异常时,及时向当前系统配置的邮箱地址发送报警邮件)
cat /var/spool/mail/root
对linux系统日志分析主要使用 grep sed sort awk 等命令
查看多少行的日志文件
• tail -n 10 test.log: 查看最后10行日志
• tail -n +10 test.log: 查看10之后的所有日志
• head -n 10 test.log: 查询头10行的日志
• head -n -10 test.log: 查询除了最后10条的所有日志
*.log 日志文件中统计独立IP地址个数的命令
• awk ‘{print $1}’ test.log | sort | uniq | wc -l
• awk ‘{print $1}’ /access.log | sort | uni1 -c | sort -nr| head -10
查找指定时间段日志的命令
• sed -n ‘/2020-12-17 16:17:20/,/2020-12-17 16:17:36/p’ test.log
• grep ‘2020-12-17 16:17:20’ test.log
日志分析排查(其它日志)
IIS日志的位置
• %SystemDrive%\inetpub\logs\LogsFiles
• %SystemRoot%\System32\LogFiles\W3SVC1
• %SystemDrive%\inetpub\logs\LogFiles\W3SVC1
• %SystemDrive%\Windows\System32\LogFiles\HTTPERR
Apache日志的位置
• /var/log/httpd/access.log
• /var/log/apache/access.log
• /var/log/apache2/access.log
• /var/log/httpd-access.log
Nginx日志位置
默认在 /usr/local/nginx/logs 目录下
accessl.log 代表访问日志,
error.log 代表错误日志,
若没有在默认路径下,则可以到 nginx.conf 配置文件中查找
Tomcat日志的位置
默认在 TOMCAT_HOME/logs/ 目录下
有 catalina.out、catalina.YYYY-MM-DD.log 、localhost.YYYY-MM-DD.log、 localhost_access_log.YYYY-MM-DD.txt、hostm-anager.YYYY-MM-DD.log、manager.YYYY-MM-DD.log 等几类日志
Weblogic日志的位置
• 在默认情况下,WebLogic 有三种日志,分别是 access log 、 server log 和 domain log
• access log 的位置是
$MW_HOME\user_projects\domains\server\logs\access.log
• server log 的位置是
$MW_HOME\user_projects\domains<domain_name>\server<server_name>\logs<server_name>.log
• domain log 的位置是
$MW_HOME\user_projects\domains<domain_name>\server、<adminserver_name>\logs<domain_name>.log
数据库日志
• Oracle数据库查看方法如下:使用 select * from v$logfile 命令,可查询日志路径,在默认情况下,日志文件记录下 O R A C L E / r d b m s / l o g 。使用 s e l e c t ∗ f r o m v ORACLE/rdbms/log 。 使用 select * from v ORACLE/rdbms/log。使用select∗fromvsql 命令,查询之前用过的SQL
• MySQL 数据库查看方法如下:使用 show variables like ‘%log_%’ 命令,可查看是否启用日志,如果日志已开启,则默认路径为 /var/log/mysql ,使用 show variables like ‘%general%’ 命令,可查看日志位置
• MsSQL 数据库查看方法如下:一般无法直接查看,需要登录到 SQL Server Management Studio ,在 “管理-SQL Server 日志” 中进行查看
内存分析
内存获取的方法如下几种:
• 基于用户模式程序的内存获取
• 基于内核模式程序的内存获取
• 基于系统崩溃转储的内存获取
• 基于操作系统注入的内存获取
• 基于系统休眠文件的内存获取
• 基于虚拟化快照的内存获取
• 基于系统冷启动的内存获取
• 基于硬件的内存获取
常用方法
1.基于内核模式程序的内存获取:
这种获取方法一般需要借助工具来完成,常用的提取工具有 Dumpit、Redline、RAM Capturer 、FTK Imager 等
2.基于系统崩溃转储的内存获取:
打开“系统属性”对话框,选择“高级” 选项卡,单击“启动和故障恢复” 中的 “设置” 按钮,打开 “启动和故障恢复” 对话框,选择 ”核心内存转储“ 并找到转储文件进行获取
3. 基于虚拟化快照的内存获取:
这种获取方法是通过 VMware Workstation、ESXI 等虚拟化软件实现的,VMware Workstation 在生成快照时会自动生成虚拟内存文件
工具
Redline
在获得内存文件后,可以使用 Redline 进行导入分析,其主要收集在主机上运行的有关进行信息、内存中的驱动程序,以及其他数据,如元数据、注册表数据库、任务、服务、网络信息和Internet 历史记录等,最终生成报告
Volatility
Volatility 是一个开源的内存取证工具,可以分析入侵攻击痕迹,包括网络连接、进程、服务、驱动模块、DLL、Handles、进程注入、cmd历史命令、IE浏览器历史记录、启动项、用户、shimcache、userassist、部分rootkit 隐藏文件、cmdliner 等
netscan : 对内存镜像中的网络连接情况进行排查
psxview : 查看内存镜像中带有隐藏进程的所有进程列表,使用psxview 命令排查隐藏进程
malfind : 查找隐藏或注入的代码、DLL
cmdscan : 可提取执行的相关命令记录
procdump : 可提取进程文件,可通过指定进程的PID 的值来对特定的进程文件进行提取,比如: procdump -p 3203 -D (用来提取进程文件)
流量分析
• wireshark
• PCHunter
• Process
• Monitor
可以对特定 IP 地址进行过滤
• ip.addr == ip
可以对指定源IP地址进行过滤
• ip.src == ip
可对端口号进行过滤
• tcp.port == 端口号
• udp.port == 端口号
可对数据包中的关键字进行检索
• tcp contains strings
威胁情报
各大厂商的威胁情报中心有很多,详细可见:
Web网络安全-----红蓝攻防之信息收集(web、安卓…)
总结
`一屋不扫何以扫天下?