随着网络安全的快速发展,不少的互联网公司都积极的参与到了这个领域,随着《网络安全法》颁布与实施、等保2.0的颁布等为网路安全发展提供了有力的后盾。一个事物的快速发展,也会引起其它不利的事物萌芽。不错,就是网络入侵事件的出现,说白了就是黑产。比如Facebook泄露的8700万用户数据、前程无忧招聘网站求职信息的泄露、华住下多个连锁酒店5亿信息泄露、万豪喜达屋用户信息泄露等。
由此可见,数据经济时代,数据越来越走向利益化的边缘。在互联网高速发展的时代,我们应该如何保护个人信息不被窃取、不被不法分子当作利益的筹码,当我们遇到入侵事件的时候,我们应该怎么办,第一步怎么办,怎么推进排查过程、是否有应急预案等,这都是我们需要了解的。在护网期间,客户遇到入侵事件,或许谈不上入侵,只是流量探测一下,客户第一反应就是拔网线、关闭端口、IP加入黑名单等常规操作。说实话这只能解决一时,解决不了一世。所以应对入侵事件需要有一个详细的排查过程,能够进行对事件进行溯源,从而找到企业内部的危险缺口,到底是应用问题还是业务逻辑缺陷导致的。说了这么多下面小白浅谈一下应急响应,我们看一下windows应急处理。
攻击者入侵一个网站必然会对企业的业务系统造成不同程度的损害,即使入侵不成功,也会使业务系统访问缓慢,即使在网络良好的情况下。当我们遇到入侵事件的时候,我们应该怎么去排查、怎么找到攻击源?下面我们可以从以下几个方面进行排查windows主机。
1) 是否有异常进程、用户
2) 敏感端口开放情况
3) 密码强度
4) 日志分析
5)异常启动项、服务、计划任务
6) 注册表信息
7) 其它
我们输入tasklis或者打开任务管理器查看进程信息,我们可以根据CPU占用率、内存占用率、启动的事件来初步判断一下异常信息,根据PID找到异常进程。执行此命令查看进程名,路径,pid 再配合使用find或findstr就可以查到pid对应的路径了wmic process get name,executablepath,processid|findstr pid,如果查到对应的可疑文件后,我们可以通过多引擎查杀看一下是否有异常进程。
除了上述命令查询外,我们也可以利用D盾来检测一下主机中的异常信息,需要注意的是没有签名验证信息的进程、没有描述信息的进程、进程的属主、进程的路径是否合法CPU或内存资源占用长时间过高的进程等方面。提示一下,D盾是需要在联网的状态下进行的。一般管理员建立临时账号是不会建立隐藏账号的,所以一旦查出来有隐藏账号,那么就顺藤摸瓜查一下这个账户的操作日志(日志完好的情况下,这里重点提示了不仅主机要开启日志记录的功能,还要有日志审计服务器)。
像这样的隐藏账号我们用命令是查询不到的,我么只能去注册表中查看是否有隐藏账号。注册表位置在DOS命令行输regedit,找到以下位置即可:
HKEYLOCALMACHINE\SAM\SAM\Domains\Account\Users\Names
敏感端口指的是什么,指的就是攻击者喜欢的,比如3389、445、135、139、1433、1521、3306等,如果这样的端口暴漏在公网服务器,那么后果不堪设想。今年在护网前期曾出现过3389的0day-CVE2019-0708,在当时引起了不少的震动,虽说现在我们拿到的只是让存在漏洞的主机蓝屏的脚本,但是不少的人或许已经有能够getshell的利用工具了,只是没有放出来而已。
我们来拿3389远程桌面服务端口来说一下,当我们知道攻击者是通过远程桌面登陆到服务器的,那么我们就可以查一下他们是怎么登陆进来的?首先我们需要问一下3389是否对外网开放,是否开启了地址白名单限制、密码是否是弱口令等问题,我们来看一下服务器日志记录了什么,通过与管理员沟通,发现密码是123456?????这是什么操作?再结合日志分析出攻击者前期做了密码破解的攻击,我这个是2003的服务器,无法统计登陆失败的事件的次数。如果是这样的话我们需要与客户沟通在不影响业务的前提下封掉3389端口、修改口令强度。小白提醒一下,即使管理员修改了3389端口,攻击者也照样会通过端口扫描扫出来的。为了避免这种情况发生,我们可以采取白名单的策略、绑定MAC地址、设置登陆失败几次就可以锁定用户。当然有更好的策略能够限制爆破也是可以的。
日志分析的前提是服务器开了日志审核策略,记录用户失败、成功的事件,这个在做安全基线检查的时候就会有这个。前期对一客户进行故障排查的时候,给他们要运维故障时间点日志,但是他们说日志缺失或者没有记录,更可笑的是只是记录登陆这一个事件,用户做了什么操作也不会记录,这真是神马操作。言归正传,我们首先将服务器的应用日志、安全日志、程序日志拷贝下来,进行本地分析一下入侵者的信息或者故障信息。
对于 Windows 事件日志分析,不同的 EVENT ID 代表了不同的意义,摘录一些常见的安全事件的说明:
我们可以根据事件ID进行来筛选我们需要的事件:
我们输入事件ID:4625进行日志筛选,发现事件ID:4625,事件数175904,即用户登录失败了175904次,那么这台服务器管理员账号可能遭遇了暴力猜解。
可以利用 eventlog 事件来查看计算机开关机的记录:
1、在“开始”菜单上,依次指向“所有程序”、“管理工具”,然后单击“事件查看器”;
2、在事件查看器中,单击“系统”,查看系统日志;
3、在系统日志右侧操作中,点击“筛选当前日志”,输入事件ID进行筛选。
其中事件ID 6006、ID 6005、ID 6009就表示不同状态的机器的情况(开关机)。
我们输入事件ID:6005-6006进行日志筛选,发现了两条在2018/7/6 17:53:51左右的记录,也就是我刚才对系统进行重启的时间。
这里推荐使用 Log Parser工具进行分析,个人觉得比较方便。以下几条是常用的查询命令,可以作为参考:
1、查询登录成功的事件
登录成功的所有事件
LogParser.exe -i:EVT –o:DATAGRID "SELECT * FROM c:\Security.evtx where EventID=4624"
指定登录时间范围的事件:
LogParser.exe -i:EVT –o:DATAGRID "SELECT * FROM c:\Security.evtx where TimeGenerated>'2018-06-19 23:32:11' and TimeGenerated<'2018-06-20 23:34:00' and EventID=4624"
提取登录成功的用户名和IP:
LogParser.exe -i:EVT –o:DATAGRID "SELECT EXTRACTTOKEN(Message,13,' ') as EventType,TimeGenerated as LoginTime,EXTRACTTOKEN(Strings,5,'|') as Username,EXTRACT_TOKEN(Message,38,' ') as Loginip FROM c:\Security.evtx where EventID=4624"
2、查询登录失败的事件
登录失败的所有事件:
LogParser.exe -i:EVT –o:DATAGRID "SELECT * FROM c:\Security.evtx where EventID=4625"
提取登录失败用户名进行聚合统计:
LogParser.exe -i:EVT "SELECT EXTRACTTOKEN(Message,13,' ') as EventType,EXTRACTTOKEN(Message,19,' ') as user,count(EXTRACTTOKEN(Message,19,' ')) as Times,EXTRACTTOKEN(Message,39,' ') as Loginip FROM c:\Security.evtx where EventID=4625 GROUP BY Message"
3、系统历史开关机记录:
LogParser.exe -i:EVT –o:DATAGRID "SELECT TimeGenerated,EventID,Message FROM c:\System.evtx where EventID=6005 or EventID=6006"
xxx 异常启动项、服务、计划任务xxx
首先我们要知道攻击者如果在服务器上面留后门的话不可能直接把后门程序放在显眼的位置,后门程序可能加载到某个程序、开机启动项、计划任务、自建服务等操作。
我们先看看一下开启启动项的问题,攻击者会把后门程序放在开机启动项里面,这样只要服务器重启服务器就会加载后门程序,攻击端就会就会接收到来自服务器的木马连接程序。
Msconfig命令看一下是否有异常的启动程序在加载,这个需要和运维人员来确认。
注册表是个好东西,我们在排查入侵事件的时候要重点查询一下注册表,其中这三项注册表是必查的,我们可以查一下这几个注册表中是否添加了启动程序。
目前,只要新出的蠕虫/特洛伊类病毒一般都有修改系统注册表的动作。它们修改的位置一般有以下几个地方:
在系统启动时自动执行的程序
HKLM\Software\Microsoft\Windows\CurrentVersion\RunOnce\
在系统启动时自动执行的系统服务程序
HKLM\Software\Microsoft\Windows\CurrentVersion\RunServices\
在系统启动时自动执行的程序,这是病毒最有可能修改/添加的地方
HKLM\Software\Microsoft\Windows\CurrentVersion\Run\ HKEYCLASSESROOT\exefile\shell\open\command
说明:此键值能使病毒在用户运行任何EXE程序时被运行,以此类推,..\txtfile.. 或者 ..\comfile.. 也可被更改,以便实现病毒自动运行的功能。
另外,有些健值还可能被利用来实现比较特别的功能:
有些病毒会通过修改下面的键值来阻止用户查看和修改注册表:
HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\System\DisableRegistryTools =
为了阻止用户利用.REG文件修改注册表键值,以下键值也会被修改来显示一个内存访问错误窗口
例如:Win32.Swen.B 病毒 会将缺省健值修改为:
HKCR\regfile\shell\open\command(Default) = "cxsgrhcl.exe showerror"
通过对以上地方的修改,病毒程序主要达到的目的是在系统启动或者程序运行过程中能够自动被执行,已达到自动激活的目的。
服务
我们以MSF权限维持中的Metsvc 模块,只要攻击者使用这个模块的后门,在服务中就会自动生成meterpreter这个服务,类型为自动启动。只要遇见这样的服务,我们就可以断定服务器已经被别人盯上了,而且是已经留了后门。
运维内部先自我排查一下,网站是否使用了低版本且存在漏洞的框架或者组件,比如Strust2、jboss(弱口令居多)、weblogic等常用的,查询一下网站管理后台以及其它后台(对外的)是否存在弱口令、上传文件的接口是否存在漏洞等,排查攻击者可以通过上传、写文件等方法来获取服务器权限的地方。虽然在这里说这些貌似没用,但是这也是一个排查的思路,毕竟多一个思路就多一个排查方向。
以上就是小白在日常中进行排查windows的大体方向,只是提供了一下框架,至于框架中的日志分析、进程分析等都需要大佬们结合实际情况来排查的。
*本文原创作者: cmdgaga,本文属于FreeBuf原创奖励计划,未经许可禁止转载
精彩推荐