严密布控 封堵“后门”
2020-12-31河南刘京义
■河南 刘京义
明辨端口,追寻后门踪迹
不法程序要开启后门,必须打开对应的网络端口。因此在CMD窗口执行“netstart-ano”命令,不仅可以查看端口使用情况,还可以在“PID”列中显示使用该端口的进程标识符。
在CMD窗口中执行“wmic”命令,在随后的“wmic:rootcli>”栏中输入“Process”命令,就会显示进程和实际程序之间的关系列表。据此不难找到目标程序具体位置。
不过“netstat”命令应对基于UDP协议的后门程序就有些力不从心了,因此,还必须借助于专业的端口查看工具(例如TCPEye、Antiyports、Fport等)。
对于来历不明的网络连接,在其右键菜单上点击“Close Connection”项(或者按下“Ctrl+K”键),即可关闭该网络连接。点击“End Process”项,可以直接中止相关进程的运行。
擦亮眼睛,揪出后门服务
一些不法程序会伪装成系统服务来隐蔽的开启后门。运行“msconfig.exe”,在“服务”面板中勾选“隐藏所有Microsoft服务”项,找到和“状态”列中显示为“正在运行”对应的服务,经细致分析,可以很快找到后门服务。在服务列中取消选择并重启系统,即令其失去活力。
在CMD窗口执行“wmic”“service”命令,在服务统计信息中的“Caption”列中找到后门服务名称,在“Pathname”列中可以定位其服务程序,然后删除即可。此外,还可使用Comodo Cleaning Essentials(CCE)安全软件来侦测其真伪。
一些狡猾的恶意程序会替换正常服务来明目张胆开启后门。可使用超级巡警工具箱、Unlocker等安全工具进行检测和清除。还有些不法程序会使用RootKit等高级技术创建隐身型服务。使用Knlsc软件即可轻松清除。如发现有隐藏服务(假设服务名是“Newsrv”),运行“knlsc13.exe-cd Newsrv”即可禁用。
全面清查可疑启动项
将自身隐藏于注册表众多的启动项目并跟随系统自动运行,也是后门程序常用的招数。使用AutoRuns安全软件就可以将启动项一网打尽,包括系统登录、网络服务、打印监控、安全认证、网络连接等十多个和启动项紧密相关的类型。在每个类型中包含了相应的启动项目。
打开“所有项目”面板,不管后门程序在注册表启动项隐藏多深,都会在该软件面前暴露,选择和后门程序相关的启动项,在其右键菜单中可以执行删除、定位注册表具体路径、打开目标文件夹等操作。
当然,狡猾后门程序绝不会藏身在显眼的启动项位置,在注册表“HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionWindows”的“ AppInit_DLLs”键值是其常用藏身地,该位置是很容易被大家忽视。“HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionPoliciesExplorerRun”分支也应引起我们的关注。
后门程序还常会在注册表“HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionWinlogon”分支下的“userinit”和“shell”键值中添加恶意程序,悄无声息的跟随系统启动自动激活。利用ActivcX技术自启动的后门程序会在注册表中的“HKEY_LOCAL_MACHINESOFTWAREMicrosoftActive SetupInstalled Components”分支下对应子健的“StubPath”键值中藏身。
多管齐下,搜捕后门进程
不管后门程序采用哪一种启动方式,最终必然会成为活动进程。使用任务管理器、Process Explorer、TaskPatrol、AnVir Task Manager、PCHunter等工具,都可以帮助查看和定位可疑进程。
例如,使用TaskPatrol进程管理工具,可以彻底“看穿”进程的来龙去脉,并准确分析安全等级,迅速清除有害进程。
有些后门程序会采取双进程守护方式,当您在任务管理器中关闭一个进程后,另外一个会自动将其激活。其实,使用记事本就可以轻松对付双进程守护型后门程序。假设某种后门程序侵入本机,在系统中创建了名称为“a.exe”和“b.exe”的守护型进程,在“开始→运行”中执行“msinfo32.exe”程序,在系统信息窗口左侧点击“系统摘要→软件环境→正在运行任务”项,在右侧窗口中显示详细的进程信息。
在其中得知“a.exe”进程的主文件保存路径为“c:windowssystem32”。接着打开“c:windowssystem32”文件夹,将“notepad.exe”文件复制到D盘根目录下,并改名为“a.exe”。接着打开记事本程序,输入“@echo off”“taskkill/f/im a.exe”“delete c:windowssystem32a.exe”“copy d:a.exe c:windowssystem32”行。之后保存为“qingchu.bat”文件。运行该批处理程序,其作用是先使用Taskkill命令结束a.exe病毒进程,之后将其删除,接着将D盘中由记事本程序改名的“a.exe”来取代其位置。之后运行qingchu.bat”程序,系统即可中止真实的a.exe进程,同时将由记事本“冒充”的病毒程序复制到目标路径中,当另一个病毒进程b.exe发现对方被关停后,即可自动将其激活,但是运行的却是记事本程序。
接下来的工作就简单了,直接使用命令“Taskkill/f/im a.exe”,将再生的a.exe中止,根据系统提示信息,可以看到激活a.exe进程的另一个进程的PID号码,在任务管理器中根据得到的PID号码,就可以查询到另一个与之关联的病毒进程,也就是b.exe进程。之后在上述系统信息窗口中可以查到其路径信息,接下来在任务管理器中中止b.exe进程,同时进入对应目录将其删除即可。这样就很轻松的击破了病毒的进程守护机制。
禁止后门进程浑水摸鱼
要想从进程列表中分辨出某个进程,首先必须熟悉每一个常用进程及其作用。例如,“system”进程是可以强制结束的,之后系统会自动加载,该进程实际只加载“C:WindowsSystem32”下的“ntoskrnl.exe”文件。“system Idle Process”进程用来分派CPU处理时间等。
上述进程都位于“C:WindowsSystem32”路径中,只要强制关闭,系统就会自动关机。“smss.exe”进程是一个会话管理子系统,负责启动用户会话。“alg.exe”进程用来管理系统网络连接共享和防火墙,应用程序网关服务,为Internet连接共享和Windows防火墙提供第三方协议插件支持。类似的进程还有很多,大家都应熟悉其具体功能。
在任务管理器中,有的进程的数量可能不止一个。例如,对于“svchost.exe”进程来说,后门程序就可以通过该进程来加载非法服务实现自启动。对于系统服务来说,一种是共享进程服务,另一种是非共享进程服务。共享进程服务一般都是利用“svchost.exe”进程启动的。
因此,如果有多个服务都通过该进程启动,在进程列表中就会出现多个“svchost.exe”进程。如果该进程数量较多,就要警惕了。可在注册表中打开“HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServices”分支,点击“F3”键,在搜索窗口中输入“%SystemRoot%system32svchost.exe”,可以查找到和该进程关联的服务项目,在具体服务的子键下选择“Parameters”项,在右侧的“ServiceDll”键值中可以发现具体的动态库路径,定位到具体的DLL动态库,就可以判断其是否是后门程序,进而对其查杀。
针锋相对,清除后门程序
目前流行的后门程序由于采用了进程插入技术,普通的查找技术很难发现其踪迹。使用PowerTool工具就可看穿进程内部秘密。在主界面的“进程管理”中显示所有的进程信息,选择后门程序常用进程(如“explorer.exe”等),在窗口底部显示其调用所有DLL模块信息,包括模块路径、厂商名称、校验标志等。细致分析后就可让后门程序露出原形。
对于确定的后门程序DLL模块,可以右击“普通卸载模块”“强行卸载模块”等项从系统中清除。因为后门通常会很好的隐蔽自己(例如使用HOOK技术等),想找到其文件不是件容易的事。其实,使用WinRAR这款常用的压缩软件就可让隐藏的后门程序彻底现形。WinRAR虽然是一款压缩软件,不过其自带了文件浏览功能,而且WinRAR调用的是非标准的API函数来显示文件信息,这样即使后门程序使用了HOOK技术,可以骗过资源管理器,却逃不过WinRAR。当在WinRAR中发现后门程序文件后,如果直接点击Delete键无法删除,可以点击工具栏上的添加按钮,在创建压缩包界面中勾选“压缩后删除原文件”项,就可以删除了。
巧用系统工具,让后门彻底消失
其实,利用系统自带的安全工具同样可以搞定后门程序。例如,在“C:Windowssystem32”文件夹中发现后门程序“Windll32.exe”,删除后,为防止其继续侵袭本机,可在该路径下创建名称 为“windll32.exe”的文件夹,之后在CMD窗口中进入该文件夹,执行“mkdir baohuwin..”命令,创建名称为“baohuwin”的防删文件夹。这样,该后门程序就无法在系统路径下容身了。
利用映像劫持技术,以毒攻毒,针对后门程序创建专用的映像劫持项目,来阻止其运行。如果您不想费力的修改注册表来实现上述操作,可以利用映像劫持编辑器工具来快速创建特定的映像劫持项目。在其主窗口中点击“新建”按钮,在弹出窗口的“进程名称”栏中输入后门程序程序名称,在“映像路径”栏中输入其他程序(例如记事本)或根本不存在的程序名称,点击“确定”,就成功的将后门程序“劫持”了。当该后门程序试图启动时,要么启动无关程序要么根本无法启动。
利用权限设置,可以巧妙的让后门程序失去活力。例如,在系统路径中发现无法删除的可疑文件“svch0st.dll”后,可在“属性→安全→组或用户名”中选择当前使用的账户名,在该账户权限列表中的“拒绝”列选择所有项目,彻底禁止该后门程序的活力。利用系统内置的Taskkill工具,可以快速清理后门进程。在CMD中执行“tasklist/svc”,可以查看当前所有进程的信息。
这样,可清楚地看到后门进程的PID号。之后执行“taskkill/PID xxxx”命令,就可以关闭PID为“xxxx”的进程。如果执行“taskkill/PID 进程ID/f/t”命令,可以强制关闭指定的进程,同时终止其启用的所有子进程。Taskkill命令有一项绝活就是可以同时关闭多个进程,例如,当需要清除ID号分别为3690、6900、7890等多个进程时,可以执行“Taskkill/f/PID 3690/PID 6900/PID 7890”命令,将其一并清除。
当然,也可以按照进程名称来执行关闭操作。执行“tasklist/im winserver32.exe/f”命令,就可以关闭名为“winserver32.exe”的进程。利用Taskkill命令,可以顺藤摸瓜发现多进程守护型后门程序。例如执行“taskkill/im daemon.exe/t”命令,根据返回信息显示该进程是属于PID为736的子进程,该进程的名称为“syswd.exe”,执行“taskkill/im syswd.exe/t”命令,发现是PID为1560进程的子进程,经查PID为1560的进程名为“sersec.exe”。这些进程相互守护,无法逐个关闭。
执行“taskkill/im daemon.exe/im syswd.exe/im sersec.exe/f”命令,就可以将其一网打尽。使用Taskkill命令,还可以快速清除所有失去相应的进程,执行“taskkill/fi " status eq not responding"”即可。有时,当发现了某个后门程序后,却无法将其对应的DLL文件删除,究其原因,在于该DLL文件插入到了某个合法进程中。对此,可以执行“taskkill/fi "modules eq xxx.dll"”命令,来关闭所有调用“xxx.dll”的进程即可。
对于顽固的后门进程,可以利用系统内置的SYSTEM帐户将其清除。例如在命令提示符窗口中执行“sc Create SuperCMD binPath="cmd/K start" type=own type=interact”命令,建立一个名为“SuperCMD”的交互服务。执行“sc start SuperCMD”命令,来启动该交互进程。之后系统会弹出交互式服务检测窗口。点击其中的“查看消息”按钮,可以以SYTEM账户身份打开命令提示符窗口。在其中执行“taskmgr.exe”程序,就会以SYSTEM账户身份启动任务管理器,这样,就可以有效关停顽固进程了。操作完毕后,在交互式服务检测窗口中点击“立即返回”按钮,回到正常操作界面。
对于一些很狡猾的后门进程,使用上述方法未必有效。使用ntsd命令可以将其轻松清除。首先确定需要清除的后门进程ID号,假设为“xxxx”,在命令行窗口中执行“ntsd-c q-p xxx”,就可以将其终结掉。其中的“-c”参数表示执行Debug级别的命令,“q”参数表示执行结束后退出,“-p”参数后面跟随具体的进程ID。当然,也可以针对进程名称进行操作,例如想关闭名为“windll.exe”的进程,可以执行“ntsd-c q-pn windll.exe”,就可以将其关停。