系统排查
系统基本信息
windows
msinfo32:系统信息,显示本地计算机的硬件资源、组件和软件环境信息。正在运行任务、服务、系统驱动程序、加载的模块、启动程序等进行排查。
systeminfo:系统信息,主机名、操作系统版本等详细信息。
Linux
lscpu:CPU信息,型号、主频、内核等。 uname -a:操作系统信息, cat /proc/version:操作系统版本信息
lsmod:所有载入系统的模块信息
用户信息
Windows
net user:查看用户账户信息(看不到以$结尾的隐藏用户); net user
username:查看用户名为username用户的详细信息; lusrmgr.msc:打开本地用户与组,可查看隐藏用户;
打开计算机管理-本地用户与组可查看隐藏用户; wmic useraccount get name,sid:查看系统中的所有用户;
注册表查看是否存在克隆账户:regedit打开注册表,选择HKEY_LOCAL_MACHHINE下的SAM选项,为该项添加允许父项的继承权限传播到该对象和所有子对象。包括那些在此明确定义的目标和用在此显示的可以应用到子对象的项目替代所有子对象的权限项目权限,使当前用户拥有SAM的读取权限。添加之后F5刷新即可访问子项并查看用户信息。同时,在此项下导出所有00000开头的项,将所有导出的项与000001F4(对应Administrator用户)导出内容做比较,若其中的F值相同,则表示可能为克隆账户。
Linux
查看所有用户信息:cat /etc/passwd
后续各项由冒号隔开,分别表示用户名、密码加密、用户ID、用户组ID、注释、用户主目录、默认登录shell。最后显示
bin/bash的,表示账户状态可登录,显示sbin/nologin的,不可登陆。 awk -F: ‘{if($3==0)print
$1}’ /etc/passwd :查询登录账户UID=0的账户,root是uid等于0的账户,如果出现其它的账户,就要重点排查;
查看可登录账户:cat /etc/passwd | grep ‘/bin/bash’
查看用户错误的登录信息:lastb(包括错误的登录方法、ip、时间等) 查看所有用户最后的登录信息:lastlog
查看用户最近登录信息:last 查看当前用户登录系统信息:who 查看空口令账户:awk -F: ‘length($2)==0 {print
$1}’ /etc/shadow
启动项:开机系统在前台或者后台运行的程序,是病毒等实现持久化驻留的常用方法。
Windows
msconfig:可查看启动项的详细信息; 注册表查看:
HKEY_CLASSES_ROOT:此处存储的信息可确保在windows资源管理器中执行时打开正确的程序。它还包含有关拖放规则、快捷方法和用户界面信息的更多详细信息;
HKEY_CURRENT_USER:包含当前登录系统的用户的配置信息,有用户的文件夹、屏幕颜色和控制面板设置;
HKEY_LOCAL_MACHINE:包含运行操作系统的硬件特定信息,有系统上安装的驱动器列表及已安装硬件和应用程序的通用配置;
HKEY_USERS:包含系统上所有用户的配置信息,有应用程序配置和可视配置;
HKEY_CURRENT_CONFIG:存储有关系统当前配置信息。 查看注册表中的信息:reg query
“HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Run”
Linux
cat /etc/init.d/rc.local cat /etc/rc.local ls -alt /etc/init.d
查看init.d文件夹下的所有文件的详细信息
任务计划:由于很多计算机都会自动加载“任务计划”,因此任务计划也是病毒实现持久化驻留的一种常用手段。
Windows
eventvwr:打开事件查看器,可看日志
打开计算机管理——系统工具——任务计划程序——任务计划程序库:可查看任务计划的名称、状态、触发器等信息;
命令行输入schtasks:可获取任务计划信息,要求是本地Administrator组的成员;
在PowerShell下输入get-scheduledtask 可查看当前系统中所有任务计划信息,包括路径、名称、状态等详细信息。
Linux
crontab -l:可查看当前任务计划 crontab -u root -l:查看root用户的任务计划(指定用户)
查看etc目录下的任务计划文件:一般在linux系统中的任务计划文件是以cron开头的,可以利用正则表达式的筛选出etc目录下的所有以cron开头的文件,具体表达式为/etc/cron,例如查看etc目录下的所有任务计划文件就可以输入ls
/etc/cron命令。
/etc/crontab
/etc/cron.d/
/etc/cron.daily/*
/etc/cron.hourly/*
/etc/cron.monthly/*
/etc/cron.weekly/
/etc/anacrontab
其它
windows防火墙的入站规则和出站规则 netsh :查看 netsh firewall show
state:显示当前防火墙的网络配置状态
进程排查
是计算机中的程序关于某数据结合的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。主机在感染恶意程序后,恶意程序都会启动相应的进程,来完成相关的恶意操作,有的恶意进程为了不被查杀,还会启动相应的守护进程来对恶意进程进行守护。
Windows
通过任务管理器查看; tasklist:可显示计算机中的所有进程,可查看进程的映像名称、PID、会话等信息; tasklist
/svc:可以显示每个进程和服务对应的情况; tasklist /m:查询加载的DLL tasklist /m wmiutils.dll
:查询特定dll的调用情况 tasklist /svc /fi “pid eq
284”:过滤器功能,eq等于、nq不等于、gt大于、lt小于、ge大于等于、le小于等于、
netstat:可显示网络连接的信息,包括活动的TCP连接、路由器和网络接口信息,是一个监控TCP/IP网络的工具。
端口定位程序:通过netstat定位处PID,然后用tasklist查看具体的程序,例如:netstat -ano |findstr
“3306” 定位出pid=6616 tasklist |find “6616” netstat -anb
3306:端口快速定位程序,需要管理员权限; powershell排查:对于有守护进程的进程,许确认子父进程之间的关系
get-wmiobject win32_process | select
name,processid,parentprocessid,path
wmic命令查询:可对进程进行查询以csv格式来显示进程名称、父进程id、进程id wmic process get
name,parentprocessid,processid/format:csv
Linux
netstat:分析可以端口、分析可疑ip地址、可疑pid及程序进程; ls -alt
/proc/PID:查看PID为600的进程可执行程序; lsof -p PID:查看进程所打开的文件; kill -9 PID:结束进程;
rm -rf filename :删除名为filename的文件;
如果root用户都无法删除相关文件,可能是因为该文件被加上了i属性,使用lsattr filename 查看文件属性,然后用chattr
-i filename 可移除i属性,进而删除文件。也有因为进程存在守护进程而无法被删除,可先将进程挂起,查杀守护进程后,再返回将进程删除。补充:chattr +i
filename 加i属性。 查看隐藏进程:顺序执行以下三条命令
ps -ef | awk ‘{print}’|sort -n |uniq>1
ls /proc |sort -n |uniq>2
diff 1 2 top:可用于挖矿进程排查,显示占用率较高的进程。
服务排查
服务可以理解为运行在后台的进程,服务可以在计算机启动时自动启动,也可暂停和重启,而且不显示任何用户界面,服务非常适合在服务器上使用,通常在为了不影响在同一天计算机上工作的其它用户,且需要长时间运行功能时使用。在应急响应中,服务作为一种运行在后台的进程,是恶意软件常用的驻留方法。
Windows
services.msc:打开服务窗口,查看所有的服务项,包括服务的名称、描述、状态等。
Linux
chkconfig --list:可查看系统运行的服务;
service --status-all:可查看所有服务的状态;
文件痕迹排查
恶意软件、木马、后门都会在文件维度上留下痕迹,排查思路:
对恶意软件常用的敏感路径进行排查;
在确定了应急响应事件的时间点后,对时间点前后的文件进行排查;
对带有特征的恶意软件进行排查,包括代码关键字或关键函数、文件权限特征。
Windows
敏感目录
各个盘下的temp(tmp)相关目录,有些恶意程序释放字体(即恶意程序运行时投放出的文件)一般会在程序中写好投放的路径,由于不同系统版本的路径有所差别,但临时文件的路径相对统一,因此在程序中写好的路径一般是临时路径;
查看浏览器历史记录、下载文件和cookie信息:攻击者可能会下载一些后续攻击工具;
查看用户Recent文件:存储最近运行文件的快捷方式,一般在windows中的路径为: C:\Document and
Settings\Administrator(系统用户名)\Recent C:\Document and Settings\Default
User\Recent
Prefetch:预读取文件夹,存放系统已经访问过的文件的读取信息,扩展名为pf,可加快系统启动进程,启动:%systemroot%\prefetch
amcache.hve:可查看应用程序执行路径、上次执行时间及sha1值。启动:%systemroot%\appcompat\programs
时间点查找 forfiles 攻击者可能会对时间动手脚 webshell
D盾、HwsKill、WebshellKill等工具对目录下的文件进行规则查询,
Linux
敏感目录 /tmp、 /usr/bin、 /usr/sbin:经常作为恶意软件下载目录及相关文件被替换的目录;
~/.ssh、/etc/ssh:经常作为后门配置的路径
时间点查找 find:可对某一时间段内增加的文件进行查找;
stat:对文件的创建时间、修改时间、访问时间进行排查;
特殊文件
查找777权限的文件:find /tmp -perm 777
webshell查找
初筛:find /var/www/ -name “*.php”
工具:findWebshell、Scan_Webshell.py扫描排查
对系统命令进行排查
ls、ps可能被攻击者替换,ls -alt /bin 查看命令目录中的系统命令的修改时间进行排查;
ls -alh /bin:查看相关文件大小,若明显偏大,则文件很可能被替换;linux后门检测
工具:chkrootkit(出现infected说明有后门)、rkhunter 排查suid程序
find /-type f -perm -04000 -ls -uid 0 2 >/dev/null
日志排查
Windows:在运行对话框中输入eventvwr,打开事件查看器窗口,可查看windows相关日志。
系统日志:%SystemRoot%\System32\Winevt\Logs\System.evtx 系统中的各个组件在运行中产生的各种事件
安全性日志:%SystemRoot%\System32\Winevt\Logs\security.evtx
记录各种安全相关的事件,登录操作、对系统文件进行创建、删除、更改等操作。
应用程序日志:%SystemRoot%\System32\Winevt\Logs\Application.evtx
日志常用事件id 4624:登陆成功 4625:登录失败
日志分析
日志筛选器进行分析
PowerShell分析 Get-WinEvent Get-WinEvent Security -InstanceId 4625:获取安全性日志下事件id为4625的所有日志信息。
使用工具
Linux
日志概述
linux系统日志一般在/var/log/下
/var/log/wtmp:记录登录进入、退出、数据交换、关机和重启,及last
/var/log/cron:记录与定时任务相关的日志信息;
/var/log/message:记录系统启动后的信息和错误日志;
/var/log/apache2/access.log:记录apache的访问日志;
/var/log/auth.log:记录系统授权信息,包括用户登录和使用的权限机制等;
…
日志分析
…
其它日志
除了windows、linux系统日志分析外,还有Web日志、中间件日志、数据库日志、FTP日志等进行分析。
IIS日志
%systemdrive%\inetpub\logs\logfiles
%systemroot%\system32\logfiles\w3svc1
…
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目录下,access.log代表访问日志,error.log代表错误日志。若没在默认路径下,则可到nginx.conf配置文件中查找。
Tomcat日志 tomcat/log下 Vsftp日志
/var/log/messages 可通过编辑/etc/vsftp/vsftp.conf配置文件来启用单独的日志,启用后,可访问vsftp.log和xferlog。
Weblogic日志
有三种日志:access log、 server log 、 domain log。
数据库日志
Oracle
select * from v$logfile:查询日志命令,默认在$ORACLE/rdbms/log目录下,
select * from v$sql:可查询之前使用的sql;
Mysql
默认路径:/var/log/mysql/
可查看日志是否开启:show variables like 'general';
开启日志:set global general_log = 'ON';
Mssql
一般无法查看,需要登录到SQL Server Management Studio,在管理——SQL Server日志 中查看。
内存分析
流量分析
ip.addr==ip:对指定ip地址进行过滤;
ip.src==ip:对指定的源ip地址进行过滤;
直接输入http、https、smtp、arp等协议进行筛选;
top.port==端口号或tcp.port==端口号对端口进行过滤;
tcp contains stings :对数据包中的关键字进行检索。