windows应急
病毒分类
1、蠕虫病毒(worm)
文件夹蠕虫、网络蠕虫、邮件蠕虫等,主要特点是具有很强的传播性
2、挖矿病毒(CoinMiner/XMiner)
利用被感染主机进行挖矿,占用主机资源,近几年十分流行,通常与僵尸网络搭配
3、木马病毒(Trojan/Backdoor)
木马、后门等主要是为了获得主机的控制权限,窃取信息,执行C&C端的功能指令等
4、感染型病毒(Virus)
主要行为是感染文件,常见家族有Sality、Ramnit、Virut等
5、宏病毒(W200M/X97M/OMacro)
文档类文件启用宏功能后执行宏代码,通常为一个DownLoader,下载执行其他恶意软件
6.僵尸网络:是由大量中了木马病毒的主机组成,不特定单一主机中了僵尸网络病毒
感染型病毒和蠕虫病毒:都具有扩散性,但感染型病毒只是在同台主机的不同文件间扩散;而蠕虫病毒是在不同主机间扩散,范围不一样。
7.勒索病毒:其实可以算是影响比较大的感染型病毒,也会感染文件,但它感染程度更恶劣,加密文件,勒索赎金。
进程排查
病毒的存在形式是多样的,可能是独立运行的进程,也可能是将动态库或恶意代码注入到系统进程、应用进程中运行。这里,粗略分为三种,即独立进程模块、动态库模块、隐藏模块。
1、独立进程块
这是最简单的一种形式,即病毒是独立可执行文件,以独立进程在运行。这类进程通常要么进程名随机,要么伪装成与系统进程相似的名字,或者名字与系统进程完全一样,但文件位置完全不是系统默认的正常路径。以某中毒主机为例,打开任务管理器后观察如下:病毒进程名为svch0st.exe,而系统进程为svchost.exe。
遇到这种,我们可以使用PCHunter对所有进程文件校验签名,检查无签名或签名可疑的进程。
或者使用微软提供的procexp,他支持自动上传进程文件至virustotal
动态库模块
病毒也可能以动态库的方式注入到系统进程或应用进程中去。如下图所示,客户某一中毒主机,我们使用PCHunter工具观察到病毒体sdbot.dll模块注入到系统进程explorer.exe进程中,并且对该进程挂了应用层钩子,包括IAT、EAT和inline等类型的钩子。
同上,可以使用PCHUNTER校验某个进程的dll文件做快速判断。
同时也可以使用procexp自动上传某个进程的dll至virustotal
如果已知病毒dll,需要找到对应的进程,可以使用如下命令。或者使用以上工具搜索所有进程的dll
tasklist /m xxx.dll |
隐藏模块
隐藏模块往往也是动态库模块,但它肉眼观察不到(Windows系统工具看不到,PCHunter等工具也看不到),是很隐蔽的一种手段,属于难查难杀的类型。
譬如,在某客户主机上,我们怀疑svchost.exe进程有问题(进程有问题并不代表进程对应的文件有问题,这一点一定要区分好),但我们使用系统工具和PCHunter等等工具均查看不到任何异常模块。至此,怀疑有隐藏模块,祭出特殊工具dump出该svchost.exe的所有模块空间(按模块分割成独立文件),观察到有隐藏的模块:
svchost_exe_PID384_hiddenmodule_2560000_x86.exe就是隐藏在svchost.exe进程中的模块
注:此特殊工具会将隐藏模块文件名加上“hiddenmodule”字眼
可使用微软的procdump工具
pd64.exx -pid [PID]
进程内存字符串
在网络端检测出某个恶意域名或 IP 后,可以在所有系统进程中搜索该域名,帮助定位发起域名连接的进程,从而定位病毒文件。
使用杀毒软件可对内存进行扫描。
这样可能会有误判,把代码当成域名字符串。
所以需要结合process hacker等工具查看指定进程内存是否确实存在指定字符串信息。
网络连接查看命令
netstat -ano |
1、临时目录排查
黑客往往可能将病毒放在临时目录(tmp/temp),或者将病毒相关文件释放到临时目录,因此需要检查临时目录是否存在异常文件。
假设系统盘在C盘,则通常情况下的临时目录如下:
C:\Users\[用户名]\Local Settings\Temp
C:\Documents and Settings\[用户名]\Local Settings\Temp
C:\Users\[用户名]\桌面
C:\Documents and Settings\[用户名]\桌面
C:\Users\[用户名]\Local Settings\Temporary Internet Files
C:\Documents and Settings\[用户名]\Local Settings\Temporary Internet Files
2、浏览器相关文件排查
黑客可能通过浏览器下载恶意文件,或者盗取用户信息,因此需要检查下浏览器的历史访问记录、文件下载记录、cookie信息,对应相关文件目录如下:
C:\Users\[用户名]\Cookies
C:\Documents and Settings\[用户名]\Cookies
C:\Users\[用户名]\Local Settings\History
C:\Documents and Settings\[用户名]\Local Settings\History
C:\Users\[用户名]\Local Settings\Temporary Internet Files
C:\Documents and Settings\[用户名]\Local Settings\Temporary Internet Files
3、最新打开文件排查
检查下最近打开了哪些文件,可疑文件有可能就在最近打开的文件中,打开以下目录或者运行中输入recent即可看到:
C:\Users\[用户名]\Recent
C:\Documents and Settings\[用户名]\Recent
4、文件时间排查
可以根据文件夹内文件列表时间进行排序,查找可疑文件。一般情况下,修改时间离现象发现时间越近的文件越可疑。当然,黑客也有可能修改”修改日期“,但遇到很少。
5、其他重要目录排查
System32也是常见的病毒释放目录,因此也要检查下该目录。hosts文件是系统配置文件,用于本地DNS查询的域名设置,可以强制将某个域名对应到某个IP上,因此需要检查hosts文件有没有被黑客恶意篡改。
C:\Windows\System32
C:\Windows\System32\drivers\hosts
远程登录排查
系统产生的日志默认分为三类:应用程序日志、安全性日志、系统日志
这些日志以evt文件形式存储在%systemroot%\system32\config目录下,使用日志查看器可查看这些日志(开始 – 运行 – eventvwr)
1、RDP远程登录
RDP登录日志位于windows安全日志中,登录类型为10,该日志记录了此主机上的所有登录行为。
审计RDP登录日志的目的是为了发现可疑登录记录,包括:
1、是否有异常的没有登录成功的审计事件,比如RDP爆破登录;
2、是否有成功登录的不明帐号记录;
3、是否有异常IP的登录事件,比如IP非此主机用户常用IP;
4、是否有异常时间的登录事件,比如凌晨2点远程登录主机;
注意:有时候登录记录会十分多,分析起来难度大,因此我们可以根据前期收集到的信息来帮助我们缩小审计范围,比如异常现象发生的时间,恶意文件创建的时间等,可在这类时间点附近查找异常的登录记录。
应用程序和服务日志 -> Microsoft -> Windows -> TerminalServices-RemoteConnectionManager->Operational,事件ID 1149为RDP登录成功日志,会记录源IP和用户。
查看本机登录过的IP:
打开注册表,打开此路径:HKCU\Software\Microsoft\Terminal Server Client。
选中Default可以看到连接过的IP。
选中Servers -> [IP]可以查看登陆名。
2、SMB远程登录
共享目录登录记录位于windows安全日志中,登录类型为3,常见的基于共享目录的攻击行为是IPC爆破,若爆破成功,攻击者可以将受攻击主机的磁盘文件映射到本地,造成信息泄露。同时,共享目录可作为传输恶意文件的途径之一,了解共享目录的访问情况可以帮助我们了解攻击者的攻击方法。
启动项排查
黑客为了保持病毒能够开机启动、登录启动或者定时启动,通常会有相应的启动项,因此有必要找出异常启动项,并删除之。
注册表查看
永久启动项
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
一次性启动项,下次启动会自动删除
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce
32位程序启动项
HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Run
通过以下路径放置程序也可以自启动程序
%appdata%\Microsoft\Windows\Start Menu\Programs\Startup
微软自带工具
taskschd.msc可启动系统自带任务计划程序,可以查看任务计划具体操作,显示所有正在运行的任务,并且可以开启任务历史记录。
注册表查看
\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Schedule\TaskCache\Tree
有些任务计划做了隐藏可通过注册表查看,这里任务计划只有名称,如果想知道任务计划执行内容,可以结合任务计划历史记录日志看判断。
服务排查
通过tasklist /svc,可以查看每个进程所对应的PID和服务
注册表查看
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services存储着所有的服务启动项
账户排查
查看用户最后一次登录时间是否异常如凌晨,修改密码时间是否异常,以及账户是否启动,是否存在后门用户。
net user 查看本地存在的账户是否异常 net user tools查看用户具体信息 |