应急响应——入侵排查

应急响应——入侵排查


1. Windows入侵排查

1.1 账号

1.1.1 弱口令

服务器是否存在弱口令?
远程连接端口是否对公网开放?(默认3389)

  • 检查方法:直接询问管理员。
  • 处理方法:修改弱口令;远程连接端口不对外开放或通过注册表编辑器修改为其他,例如23389

1.1.2 新建账号和可疑账号

  • 检查方法一:Win+R/cmd,输入lusrmgr.msc

本地用户和组,观察是否有新建账号和可疑账号,属不属于Administrators组?
在这里插入图片描述
在这里插入图片描述

  • 检查方法二:cmd,输入net localgroup administrators

效果同法一,本地用户和组-组
在这里插入图片描述

  • 检查方法三:powershell,输入Get-WmiObject -Class Win32_UserAccount | Select-Object Name, SID

效果同法一,本地用户和组-用户,但是能看到SID
在这里插入图片描述

  • 处理方法:禁用或删除对应的账户
  1. net user 用户名 /del #删除用户
    在这里插入图片描述
  2. 或者在本地用户和组中删除

1.1.3 隐藏账号和克隆账号

  • 检查方法一:Win+R/cmd,输入lusrmgr.msc

去本地用户和组查看是否有$符号的隐藏账号,如果有隐藏账户,需要查看详细信息,看看是不是本地超级管理员组的
在这里插入图片描述

cmd,输入net user admin$,效果同上。

  • 检查方法二:Win+R,输入regedit

打开注册表编辑器,访问HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account\Users,访问注册表权限不够要设置可读权限,设置好权限后点击查看-刷新即可查看到users目录
在这里插入图片描述
查看注册表对应的键值
在这里插入图片描述
克隆账号跟超级管理员的F注册表通常是一样的,说明也是属于超级管理员组的
在这里插入图片描述
在这里插入图片描述

  • 处理方法:删除注册表 HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account\Users\ 下对应帐户的键值即可(两处)
  • 另外:也可以借助d盾 https://www.d99net.net/

查看是否存在克隆账号,要注意用管理员权限启动d盾和注册表权限问题
在这里插入图片描述

1.1.4 在线用户

检查除了自己外,是否还有其他人连接到服务器。

  • 检查方法一:如下命令进行查询。

cmd,输入quser
cmd,输入query user
cmd,输入query session

  • 检查方法二:任务管理器中用“用户”功能模块。
  • 处理方法:禁用或删除对应的账户

1.1.5 登录日志

  • 检查方法:
  1. win+R,输入eventvwr.msc,打开事件管理器
  2. Windows日志 -> 安全 -> 将所以事件另存为Security.evtx导出到c盘根目录下,并在该目录下启动cmd(方便命令执行)
    在这里插入图片描述
  3. 利用Log Parser进行分析
    Log Parser https://www.microsoft.com/en-us/download/details.aspx?id=24659,下载安装完成后(默认路径安装),添加到环境变量
    在这里插入图片描述
    查询成功登录的所有事件:cmd,输入LogParser.exe -i:EVT –o:DATAGRID "SELECT * FROM Security.evtx where EventID=4624"
    指定登录时间范围的事件:cmd,输入Logparser.exe -i:EVT –o:DATAGRID "SELECT * FROM Security.evtx where TimeGenerated>'2025-03-05 23:32:11' and TimeGenerated<'2025-03-06 23:34:00' and EventID=4624"
    提取登录成功的⽤户名和IP:cmd,输入LogParser.exe -i:EVT -o:DATAGRID "SELECT EXTRACT_TOKEN(Message,13,' ') as EventType,TimeGenerated as LoginTime,EXTRACT_TOKEN(Strings,5,'|') as Username,EXTRACT_TOKEN(Message,38,' ') as Loginip FROM Security.evtx where EventID=4624"。这里如果得到了对方的主机名,可以使用cmd,输入ping 主机名 -4 获取到对方的ip地址

还有一些常用的命令
查询登录失败的所有事件: LogParser.exe -i:EVT –o:DATAGRID "SELECT * FROM Security.evtx where EventID=4625"
提取登录失败⽤户名进⾏聚合统计:LogParser.exe -i:EVT "SELECT EXTRACT_TOKEN(Message,13,' ') as EventType,EXTRACT_TOKEN(Message,19,' ') as user,count(EXTRACT_TOKEN(Message,19,' ')) as Times,EXTRACT_TOKEN(Message,39,' ') as Loginip FROM Security.evtx where EventID=4625 GROUP BY Message"
系统历史开关机记录(注意这条命令审计的是系统日志):LogParser.exe -i:EVT –o:DATAGRID "SELECT TimeGenerated,EventID,Message FROM System.evtx where EventID=6005 or EventID=6006"

关于Windows系统日志分析

  • 日志分析前必做的几个设置
  1. 建议将应⽤程序⽇志、系统⽇志、安全⽇志的属性做如下设置,日志满时将其存档,不覆盖事件
    在这里插入图片描述
  2. 设置审核策略
    gpedit.msc —>Windows设置—>安全设置—>本地策略—>审核策略
    在这里插入图片描述

Windows系统日志是记录系统中硬件、软件和系统问题的信息,同时还可以监视系统中发⽣的事件。⽤户可以通过它来检查错误发生的原因,或者寻找受到攻击时攻击者留下的痕迹。
Windows主要有以下三类日志记录系统事件:应⽤程序日志、系统日志和安全日志。

1.应⽤程序日志
包含由应⽤程序或系统程序记录的事件,主要记录程序运⾏⽅⾯的事件,例如数据库程序可以在应⽤程序⽇志中记录⽂件错误,程序开发⼈员可以⾃⾏决定监视哪些事件。如果某个应⽤程序出现崩溃情况,那么我们可以从程序事件⽇志中找到相应的记录,也许会有助于你解决问题。
⽇志的默认位置为:C:\Windows\System32\winevt\Logs\Application.evtx
2.系统日志
Windows系统组件产⽣的事件,主要包括驱动程序、系统组件、应⽤程序错误消息等。
日志的默认位置为:C:\Windows\System32\winevt\Logs\System.evtx
3.安全日志(这个查看比较多)
主要记录系统的安全信息,包括成功的登录、退出,不成功的登录,系统⽂件的创建、删除、更改,需要指明的是安全⽇志只有系统管理员才可以访问,这也体现了在⼤型系统中安全的重要性。
日志的默认位置为:C:\Windows\System32\winevt\Logs\Security.evtx
在这里插入图片描述
系统和应⽤程序⽇志存储着故障排除信息,对于系统管理员更为有⽤。 安全⽇志记录着事件审计信息,包括⽤户验证(登录、远程访问等)和特定⽤户在认证后对系统做了什么,对于调查⼈员⽽⾔,更有帮助。

Windows系统内置三个核⼼日志⽂件:System、Security、Application,默认大小均为20480kB也就是20MB,记录数据超过20MB时会覆盖过期的日志记录;其他的应⽤程序以及服务日志默认⼤⼩均为1MB,超过这个大小⼀样的处理⽅法。

  • 事件类型

Windows事件⽇志共有5种类型,所有的事件类型必须是这5种的其中⼀种,⽽且只能是⼀种。
在这里插入图片描述
这五类事件中最重要的是成功审核(Success Audit),所有系统登录成功都会被标记为成功审核。每个成功登录事件都会标记⼀个登录类型。
在这里插入图片描述
登录类型2:交互式登录(Interactive): 就是指⽤户在计算机的控制台上进⾏的登录,也就是在本地键盘上进⾏的登录。
登录类型3:⽹络(Network): 最常⻅的是访问⽹络共享⽂件夹或打印机。另外⼤多数情况下通过⽹络登录IIS时也被记为这种类型,但基本验证⽅式的IIS登录是个例外,它将被记为类型8。
登录类型4:批处理(Batch) :当Windows运⾏⼀个计划任务时,“计划任务服务”将为这个任务⾸先创建⼀个新的登录会话以便它能在此计划任务所配置的⽤户账户下运⾏,当这种登录出现时,Windows在⽇志中记为类型4,对于其它类型的⼯作任务系统,依赖于它的设计,也可以在开始⼯作时产⽣类型4的登录事件,类型4登录通常表明某计划任务启动,但也可能是⼀个恶意⽤户通过计划任务来猜测⽤户密码,这种尝试将产⽣⼀个类型4的登录失败事件,但是这种失败登录也可能是由于计划任务的⽤户密码没能同步更改造成的,⽐如⽤户密码更改了,⽽忘记了在计划任务中进⾏更改。
登录类型5:服务(Service) :与计划任务类似,每种服务都被配置在某个特定的⽤户账户下运⾏,当⼀个服务开始时,Windows⾸先为这个特定的⽤户创建⼀个登录会话,这将被记为类型5,失败的类型5通常表明⽤户的密码已变⽽这⾥没得到更新。
登录类型7:解锁(Unlock) :很多公司都有这样的安全设置:当⽤户离开屏幕⼀段时间后,屏保程序会锁定计算机屏幕。解开屏幕锁定需要键⼊⽤户名和密码。此时产⽣的⽇志类型就是Type 7。
登录类型8:⽹络明⽂(NetworkCleartext) :通常发⽣在IIS 的 ASP登录。不推荐。
登录类型9:新凭证(NewCredentials) :通常发⽣在RunAS⽅式运⾏某程序时的登录验证。
登录类型10:远程交互(RemoteInteractive) :通过终端服务、远程桌⾯或远程协助访问计算机时,Windows将记为类型10,以便与真正的控制台登录相区别,注意XP之前的版本不⽀持这种登录类型,⽐如Windows2000仍然会把终端服务登录记为类型2。
登录类型11:缓存交互(CachedInteractive) :在⾃⼰⽹络之外以域⽤户登录⽽⽆法登录域控制器时使⽤缓存登录。默认情况下,Windows缓存了最近10次交互式域登录的凭证HASH,如果以后当你以⼀个域⽤户登录⽽⼜没有域控制器可⽤时,Windows将使⽤这些HASH来验证你的身份。

  • 常⻅的事件ID对应表

在这里插入图片描述
其中常用的是
在这里插入图片描述
举例1:筛选4720 看到被创建的隐藏账号
在这里插入图片描述
举例2:筛选4625 找到⼤量的失败的登录⽇志 有可能被暴⼒破解
在这里插入图片描述

windows安全事件查看及安全事件id汇总 https://blog.csdn.net/qq_45825991/article/details/115577680

如何查找事件id?
控制⾯板-管理⼯具-事件查看器-Windows日志-安全-筛选当前日志-输入事件id
在这里插入图片描述

1.2 端口和进程

可能存在一些还在运行中的后门程序,方便快速定位。

1.2.1 检查端口情况

检查端口连接,是否有远程连接、可疑连接等

  • 检查方法:
  1. cmd,输入netstat -ano查看目前的网络连接、本地端口等情况,定位可疑的ESTABLISHED、LISTENING和TIME_WAIT进程pid。
    LISTENING 服务启动后⾸先处于侦听
    ESTABLISHED 建⽴连接。表示两台机器正在通信。
    CLOSE_WAIT 对⽅主动关闭连接或者⽹络异常导致连接中断,这时我⽅的状态会变成CLOSE_WAIT,此时我⽅要调⽤close()来使得连接正确关闭
    TIME_WAIT 我⽅主动调⽤close()断开连接,收到对⽅确认后状态变为TIME_WAIT
    另外:
    cmd,输入netstat -anob查看每个pid对应的进程名称,需要管理员权限才能执行
    cmd,输入tasklist /svc显示每个进程的进程名pid以及显示每个进程中主持的服务。
  2. 根据查询到的pid定位到进程cmd,输入tasklist | findstr "5080"
  3. 根据查询到的建立连接的IP,可以去微步https://x.threatbook.com/上查一下是否为已知C2服务器(命令与控制服务器)

1.2.2 检查异常进程

  • 检查方法一:任务管理器-进程

在这里插入图片描述

  • 检查方法二:cmd,输入msinfo32.exe,点击 “软件环境” -> “正在运行任务”

在这里插入图片描述

  • 检查方法三:使用Process Explorer

Process Explorer https://learn.microsoft.com/zh-cn/sysinternals/downloads/process-explorer#download
在这里插入图片描述

  • 检查方法四:

cmd,输入wmic process get caption,commandline /value 在windows下查看所有运行程序(或进程)的命令行参数
在这里插入图片描述
cmd,输入wmic process where caption="chrome.exe" get caption,commandline /value 查询某一个进程的命令行参数
在这里插入图片描述

1.2.3 检查进程关联文件

  • 检查方法一:

在Process Explorer中打开如下选项,即可查看到进程关联的文件、注册表等,实现类似linux中 lsof -p <pid> 的效果。
在这里插入图片描述
假如此时通过powershell打开Eula.txt,可成功看到powershell进程关联到的Eula.txt文件
在这里插入图片描述

  • 检查方法二:

cmd,输入tasklist /m可以通过输⼊这条命令查看进程加载了哪些dll
在这里插入图片描述
cmd,输入tasklist /m ntdll.dll如果有怀疑的dll,可以通过这条命令查看调⽤ntdll.dll模块的进程都有哪些
在这里插入图片描述

1.2.4 如何快速定位恶意进程?

  1. 没有签名验证信息的进程(D盾-工具-进程)
  2. 没有描述信息的进程(D盾-工具-进程)
  3. 进程的属主(ProcessExplorer)
  4. 进程的路径是否合法(ProcessExplorer)
  5. CPU或内存资源占用长时间过高的进程(任务管理器)
  6. 攻击时间段内启动、被修改过的进程(LastActivityView)

1.2.5 如何速定位进程目录?

  1. 任务管理器的进程栏,直接右键,点击“打开文件所在的位置”
  2. msinfo32可以直接看进程对应的路径。cmd,输入msinfo32.exe-软件环境-正在运行的任务

1.2.6 KILL进程

一般乙方只负责排查出报告,不负责后续的清理,如果一定要清理必须要在客户有明确的说明的情况下再去清理。最好是有文字留档,避免背锅。

  • 命令行:

taskkill /F /PID <进程ID>
在这里插入图片描述
taskkill /F /IM <进程名,可以用*表示通配符>
在这里插入图片描述

  • 图形化:

选中进程,右键选择Kill就可以

1.3 开机启动项、计划任务、服务、防火墙

1.3.1 开机启动项

  • 检查方法一:启动目录

操作系统中的启动菜单,该目录下的文件可以随着用户登录系统自启动
文件管理器-C:\Users\Administrator\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
Win+R,输入shell:startup

  • 检查方法二:任务管理器-启动
  • 检查方法三:注册表启动

Windows+r,输入regedit 打开注册表编辑器
HKEY_CURRENT_USER\software\micorsoft\windows\currentversion\run
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Runonce
观察右侧是否有启动异常的项目,这里数值数据写入后门文件地址,后门软件即可随着用户登录系统自启动
在这里插入图片描述

HKEY_CURRENT_USER\Environment\是否存在UserInitMprLogonScript参数(Logon Scripts 后门);
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon的Userinit的参数值是否有除userinit.exe外的其他程序(userinit后门);
如有请删除,并建议安装杀毒软件进行病毒查杀,清除残留病毒或木马。

  • 检查方法四:组策略编辑器下的脚本文件

cmd输入,gpedit.msc
点击显示文件会自动跳转到 C:\Windows\System32\GroupPolicy\Machine\Scripts\Startup
在这里插入图片描述
点击显示文件会自动跳转到 C:\Windows\System32\GroupPolicy\Machine\Scripts\Startup
在这里插入图片描述

点击显示文件会自动跳转到 C:\Windows\System32\GroupPolicy\User\Scripts\Logon
在这里插入图片描述
点击显示文件会自动跳转到 C:\Windows\System32\GroupPolicy\User\Scripts\Logon
在这里插入图片描述

1.3.2 计划任务

  • 检查方法一:任务执行计划程序库

cmd,输入taskschd.msc
打开任务计划程序库-查看属性,检测是否存在可疑的任务
在这里插入图片描述

  • 检查方法二:命令行

cmd,输入schtasks,效果同上
在这里插入图片描述

1.3.3 服务

  • 检查方法:cmd,输入services.msc,注意服务状态和启动类型,检查是否有异常服务。
    木马和后门程序如果存在,都会在这个界面中有所体现,随系统启动而启动

在这里插入图片描述

1.3.4 防火墙

  • 检查方法:

确认防火墙开关状态。
打开【Windows防⽕墙】窗⼝,单击【⾼级设置】,然后选择【⼊站规则】或【出站规则】可查看防⽕墙的⼊站规则或出站规则。入站表示从外部访问内部。

1.4 系统信息

1.4.1 近期活动

  • 检查方法:使用工具LastActivityView

LastActivityView是一款适用于Windows操作系统的工具,它从运行系统的各种来源收集信息,并显示用户的操作日志以及这台计算机上发生的事件。LastActivityView所显示的活动包括:运行.exe文件、打开打开/保存对话框、从资源管理器或其他软件打开文件/文件夹、软件安装、系统关机/启动、应用程序或系统崩溃、网络连接/断开等等。

https://www.nirsoft.net/utils/computer_activity_view.html
记得下载语言文件并放入到文件夹中
在这里插入图片描述

1.4.2 可疑目录和文件

注意:检查前先开启隐藏文件和文件后缀
在这里插入图片描述

  • 检查方法:
  1. 文件管理器-%UserProfile%\Recent,打开最近操作过的文件,对可疑的⽂件进⾏分析,也可以丢到在线检测分析平台。
  2. 文件管理器-%TMP%、文件管理器-%TEMP%、文件管理器-C:\Windows\Temp,可以打开临时文件目录,对可疑的⽂件进⾏分析,也可以丢到在线检测分析平台。
  3. 文件管理器-%WINDIR%、文件管理器-%WINDIR%\System32、文件管理器-%LOCALAPPDATA%,对可疑的⽂件进⾏分析,也可以丢到在线检测分析平台。
  4. 用户目录,如C:\Users、C:\Users\Public,系统创建⽤户以及账号登录的时候,会在c:\users⽬录下留痕,对可疑的⽂件进⾏分析,也可以丢到在线检测分析平台。
  5. 回收站、文件管理器-%SystemDrive%$Recycle.Bin,对可疑的⽂件进⾏分析,也可以丢到在线检测分析平台。浏览器下载目录、浏览器历史记录。
  6. 修改时间在创建时间之前的为可疑文件,或者近期更新过的文件。
  7. ADS隐藏后门
    当看到运行进程中调用的文件名包含:,或者dir /r看到的文件列表中包含:,类似test.txt:1.vbs时,可考虑此后门,直接删除test.txt即可
    在这里插入图片描述

1.4.3 异常流量

  • 检查方法:

icmp or dns # wireshark
后门不一定会是TCP的,可能是走的其他协议比如DNS后门
在这里插入图片描述

1.4.4 系统补丁

  • 检查方法:cmd,输入systeminfo,将结果复制到提权辅助页,查看是否有相应可用的漏洞

在这里插入图片描述

提权辅助页
http://bypass.tidesec.com/exp/

1.5 自动化查杀

1.5.1 病毒查杀

  • 检查方法:下载安全软件,更新最新病毒库,进行全盘扫描。

1.5.2 杀毒软件推荐

  • 卡巴斯基:http://devbuilds.kaspersky-labs.com/devbuilds/KVRT/latest/full/KVRT.exe (推荐理由:绿色版、最新病毒库)
  • 大蜘蛛:http://free.drweb.ru/download+cureit+free (推荐理由:扫描快、一次下载只能用1周,更新病毒库)
  • 火绒安全软件:https://www.huorong.cn (推荐理由:如果用火绒就一定要用联网控制的功能,虽然很烦,但是很好用
  • 360杀毒:http://sd.360.cn/download_center.html

1.5.3 在线病毒扫描(在线检测分析平台)

  • https://x.threatbook.cn/ // 微步在线
  • https://www.virustotal.com/gui/ // 老牌查杀
  • http://www.virscan.org //多引擎在线病毒扫描网 v1.02,当前支持 41 款杀毒引擎
  • https://habo.qq.com //腾讯哈勃分析系统
  • https://virusscan.jotti.org //Jotti恶意软件扫描系统
  • http://www.scanvir.com //针对计算机病毒、手机病毒、可疑文件等进行检测分析

另外

一些特殊情况,比如使用了msf的migrate迁移到内存了,可能手动什么也查不出来,所以还是建议安装杀软做一次扫描,尽可能保证内存的安全。
在这里插入图片描述
扫描后,成功发现恶意的内存:
在这里插入图片描述

  • 不要盲目信任杀软的处理,经测试火绒处理了权限还是在
  • 如果被加载了恶意的内存,最好的办法是在备份进程内存后重启进程(不需要取证分析的话可以不备份)

1.6 推荐的辅助工具

上面每一项都太杂了,而且比如伪装成一样的进程名可能也不太方便判断,那么是否有什么工具集成了这些功能,能够辅助看,然后再去查漏补缺呢?当然有,如下:

  • Autoruns

Autoruns for Windows是Mark Russinovich和Bryce Cogswell开发的一款软件,它能用于显示在 Windows启动或登录时自动运行的程序,并且允许用户有选择地禁用或删除它们,例如那些在“启动”文件夹和注册表相关键中的程序。此外,Autoruns还可以修改包括:Windows资源管理器的Shell扩展(如右键弹出菜单)、IE浏览器插件(如工具栏扩展)、系统服务和设备驱动程序、计划任务等多种不同的自启动程序。
下载地址:https://docs.microsoft.com/zh-cn/sysinternals/downloads/autoruns
在这里插入图片描述

  • 火绒剑

火绒剑是火绒安全软件里的高级工具,也是一款用于分析、处理恶意程序的安全工具软件,适用于Windows系统的安全分析辅助工具,具有系统动作监控、文件管理、进程管理、启动项管理、注册表管理、服务管理、驱动模块、网络管理、系统内核查看、钩子扫描等功能。后面改名成了安全分析工具,在火绒的安全工具最下面。
下载地址:https://www.huorong.cn/person6.html(官网先下载安装火绒,然后去安全工具中找到 安全分析工具,一般客户有安装火绒的情况下建议用,或者安装后把它和依赖dll提取出来放到U盘,还是推荐用autoruns
在这里插入图片描述

  • OpenArk

OpenArk是一款Windows平台上的开源Ark工具. Ark是Anti-Rootkit(对抗恶意程序)的简写, OpenArk目标成为逆向工程师、编程人员的工具,同时也能为那些希望清理恶意软件的用户服务。以后也将会支持更多功能和命令。
下载地址:https://github.com/BlackINT3/OpenArk/releases/latest
在这里插入图片描述


2. Linux入侵排查

2.1 账号

2.1.1 前置

  • 查看系统所有⽤户信息
cat /etc/passwd

在这里插入图片描述
account:password:UID:GID:GECOS:directory:shell
用户名:密码:用户ID:组ID:用户说明:家目录:登陆之后的 shell
在这里插入图片描述

Linux用户登录的过程:

  1. ⾸先在/etc/passwd⽂件中查找是否有你的账号,如果没有则⽆法登录,如果有的话将该⽤户的UID和GID读出来,此外将此⽤户的shell设置也⼀并读出。
  2. 然后根据UID到/etc/shadow⽂件中去寻找相应⽤户的密码,如果匹配⼀致
  3. 进⼊shell控制的阶段。

要注意,无密码的用户只允许本机登陆,不允许远程登陆

  • 查看可登录的账号
cat /etc/passwd | grep "/bin/bash"

在这里插入图片描述
在这里插入图片描述

  • 关于影子文件
sudo cat /etc/shadow

在这里插入图片描述
/etc/shadow⽂件,⽤于存储Linux系统中⽤户的密码信息,⼜称为“影⼦⽂件”。
/etc/shadow⽂件只有root⽤户拥有读权限,其他⽤户没有任何权限,这样就保证了⽤户密码的安全性。
同 /etc/passwd ⽂件⼀样,⽂件中每⾏代表⼀个⽤户,同样使⽤ “:” 作为分隔符,不同之处在于,每⾏⽤户信息被划分为 9 个字段。每个字段的含义如下:
⽤户名:加密密码:最后⼀次修改时间:最⼩修改时间间隔:密码有效期:密码需要变更前的警告天数:密码过
期后的宽限时间:账号失效时间:保留字段

  • 查看当前⽤户的登录情况
who

在这里插入图片描述
tty表示本地登陆 pts表示远程登录

  • 显示目前登录到系统的用户
w

在这里插入图片描述
USER:表示登录系统的用户名
TTY:表示用户使用的TTY名称
FROM:表示用户从哪里登录来(一般显示远程登录主机的IP地址或主机名)
LOGIN@:表示用户登录的时期和时间
IDLE:表示某个程序上次从终端开始执行到现在持续的时间
JCPU:表示该终端上的所有进程及子进程使用系统的总时间
PCPU:表示当前活动进程使用的系统时间
WHAT:表示当前用户执行的进程名称和选项

  • 查看系统已开机运行了多长时间、当前登录用户数,系统负载的平均值
uptime

在这里插入图片描述
在这里插入图片描述
grep "model name" /proc/cpuinfo | wc -l 这个命令可以查看服务器CPU的核心数.

2.1.2 是否为弱口令

  • 检查方法:询问管理员
  • 检查空口令用户:执行命令 sudo awk -F: 'length($2)==0 {print $1}' /etc/shadow

2.1.3 是否有可疑账号

  • 检查方法:执行命令 cat /etc/passwd

2.1.4 查询特权用户(uid=0)

  • 检查方法:执行命令 sudo awk -F: '$3==0{print $1}' /etc/passwd

2.1.5 查询可以远程登录的账号

  • 检查方法:执行命令 sudo awk '/\$1|\$6/{print $1}' /etc/shadow

2.1.6 其他账号是否拥有sudo权限

如非管理需要,普通帐号应删除sudo权限

  • 检查方法:执行命令 sudo cat /etc/sudoers | grep -v "^#\|^$" | grep "ALL=(ALL)"

2.1.7 公私钥免密登陆

  • 检查方法:执行命令 sudo cat /root/.ssh/authorized_keys

查看/root/.ssh/authorized_keys是否被修改?

2.1.8 登陆日志

  • 注意:使用 ssh root@ip whoami这种执行命令的,是没有登陆日志的。
  • 检查方法:

执行命令:lastlastlog(不建议,ssh -T root@127.0.0.1 /bin/bash -i 可以隐藏记录)
在这里插入图片描述
在这里插入图片描述
执行命令:sudo cat /var/log/secure | grep -E "Accepted|Failed"(建议)

查看⽤户错误的登录信息
执行命令:lastb 可查看显示⽤户错误的登录列表 包括错误的登录⽅法 、ip地址 、时间等。
在这里插入图片描述

2.2 历史命令

history⽤来查阅输⼊的历史命令,攻击者可以可以通过history -c来清除记录

如何让history命令显示的历史命令记录带有时间戳?
vi /etc/profile、将下列内容写入这个文件并保存 HISTTIMEFORMAT="%Y-%m-%d %H:%M:%S `whoami` "
刷新环境变量 source /etc/profile
再次进入/bin/bash下的history命令,即带有时间戳。

  • 检查方法:执行命令 cat /root/.bash_historycat /home/$USER/.bash_history,假如被清楚后可以在这两个文件内查看是否存在可疑的命令操作

2.3 端口和进程

2.3.1 检查是否有异常连接的端口

  • 检查方法:

执行命令 netstat -antlp | more,根据查询到的建立连接的IP,可以去微步上查一下是否为C2?
根据获取到的pid执行 ls -l /proc/$ PID/exefile /proc/$ PID/exe($PID为对应的pid号),看一下路径。
在这里插入图片描述
也可通过lsof -i:port来查看所有打开指定端口的进程,根据查询到的建立连接的IP,可以去微步上查一下是否为已知C2
在这里插入图片描述
关闭未知连接kill -9 pid即可关闭

2.3.2 检查异常进程

注意事项

  1. 注意有没有命名奇怪的进程,如以.xxx开头的进程
  2. 注意有没有CPU占用比较高的进程。

top命令是linux下常⽤的内存分析管理⼯具,能够实时显示系统中各个进程的资源的占⽤状况,类似于windows的任务管理器(在显示结果内按c或m可以优先查看cpu占用比高和内存占用比高的进程)
在这里插入图片描述

  1. kill -9 PID后是否重启复活
  2. 命名为[xxx]的不一定都是正常的,比如[ksoftirqd/0],可能是被种到内核了,可以用lsof来辅助分析
  • 检查方法:
  1. 执行命令ps -auxwww(列出所有正在运行的进程,包括完整命令。常规,针对可见的进程)
  2. 使用工具unhide(针对隐藏的进程,如使用工具libprocesshider进行隐藏)
  3. lsof -p PID可以看到pid对应进程,文件的完整路径和连接状态,lsof -u user可以看到user用户的所有进程

2.4 开机启动项、计划任务、服务

2.4.1 开机启动项

  • 系统运行级别示意图:
    在这里插入图片描述
    查看运行级别命令runlevel,系统默认允许级别在下列配置文件内:
vi  /etc/inittab
id=3:initdefault  #系统开机后直接进入哪个运行级别
  • 开机启动项配置文件:
/etc/rc.local
/etc/rc.d/rc[0~6].d

当我们需要开机启动自己的脚本时,只需要将可执行脚本丢在/etc/init.d目录下,然后在/etc/rc.d/rc*.d文件中建立软链接即可。(此中的 * 代表0,1,2,3,4,5,6[0~6]这七个等级)
在这里插入图片描述
在这里插入图片描述

举例:
ln -s /etc/init.d/sshd /etc/rc.d/rc3.d/S100ssh
此处sshd是具体服务的脚本文件,S100ssh是其软链接,S开头代表加载时自启动;如果是K开头的脚本文件,代表加载时需要关闭的。

  • 检查方法:检查启动项文件ls -al /etc/rc.localls -al /etc/rc.d/rc[0~6].d/*

2.4.2 计划任务

  1. 利用crontab创建计划任务

crontab -l 列出当前用户cron服务的详细内容
Tips:默认编写的crontab文件会保存在 (/var/spool/cron/用户名 例如: /var/spool/cron/root
crontab -r 删除当前用户cront任务(谨慎:删除所有的计划任务)
crontab -e 使用编辑器编辑当前的crontab文件
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  1. 利用anacron命令实现异步定时任务调度

每天运行 /home/backup.sh 脚本:
vi /etc/anacrontab
@daily 10 example.daily /bin/bash /home/backup.sh
当机器在backup.sh期望被运行时是关机的,anacron会在机器开机十分钟之后运行它,而不用再等待7天。

  • 检查方法:检查如下目录的内容中,是否包含恶意的脚本
    more /var/spool/cron/*
    /var/spool/anacron/*
    /etc/crontab
    /etc/cron.d/*
    /etc/cron.daily/*
    /etc/cron.hourly/*
    /etc/cron.monthly/*
    /etc/cron.weekly/
    /etc/anacrontab
  • 检查方法补充:
    crontab -l 查看当前用户的计划任务
    crontab -u root -l 查看指定⽤户的计划⽤户
    ls /etc/cron* 使⽤利⽤正则表表达式的*筛选出/etc⽬录下所有以cron开头的⽂件

反解cron表达式
https://crontab.guru/
https://qqe2.com/dev/cron

2.4.3 服务

  • 检查方法:
  1. 查看服务自启动状态,执行命令systemctl list-unit-files --type service
    在这里插入图片描述
    在这里插入图片描述

  2. 查看服务的状态service --status-all
    在这里插入图片描述
    在这里插入图片描述
    3.关闭和启动服务
    sudo systemctl stop xxx.service //停⽌服务
    sudo systemctl start xxx.service //启动服务
    sudo systemctl disable xxx.service //禁⽌服务开机启动
    sudo systemctl enable xxx.service //开机启动服务

2.5 系统信息

2.5.1 可疑的目录和文件

  • 检查方法:
  1. 检查敏感目录,如/tmp、/var/tmp、/usr/tmp、/usr/bin等,上述目录经常作为恶意软件的下载⽬录及关键⽂件被替换的⽬录。~/.ssh和/etc/ssh也经常作为⼀些后⻔配置的路径,需要重点检测。
  2. 使用find查找最近修改过的文件
# 查找60分钟内内容修改的文件
find ./ -name '*' -mmin -60 # +60表示60分钟之前修改过的

# 查找24小时内内容修改的文件
find ./ -name "*" -mtime 0

# 查找48小时内状态修改的文件
find ./ -ctime -2

# 查找 2022-10-24 - 2022-11-26 间修改过的文件
find ./ -type f -newermt 2022-10-24 ! -newermt 2022-11-26

-amin n 查找n分钟以前被访问过的所有文件。
-atime n 查找n天以前被访问过的所有文件。
-cmin n 查找n分钟以前文件状态被修改过的所有文件。
-ctime n 查找n天以前文件状态被修改过的所有文件。
-mmin n 查找n分钟以前文件内容被修改过的所有文件。
-mtime n 查找n天以前文件内容被修改过的所有文件。
-print:将搜索结果输出到标准输出。 #
  1. 使用find查找指定时间段内修改的文件
touch -t 10301500 file1 #10.30 15:00
touch -t 10301600 file2 #10.30 16:00
stat file1
stat file2
find ./ -newer file1 ! -newer file2 # 列出比file新但是比file2旧的文件

在这里插入图片描述

  1. 使用find查找特殊权限的文件
find / -name ".*" -perm 4777 #防止suid提权
find / -perm /4000  #防止suid提权
find / -uid 1001    #找出uid为1001的用户的文件
  1. 查找首字符为.的隐藏文件,如果rm -rf不能删除,可能是使用chattr +i锁定了,只需要chattr -i文件然后rm -rf删除即可
find ./ -name ".*" #当前目录的隐藏文件

在Linux中,使⽤chattr命令来防⽌root和其他管理⽤户误删除和修改重要⽂件及⽬录,此权限⽤ls -l是查看不出来的,从⽽达到隐藏权限的⽬的。
chattr +i webshell.php 锁定⽂件
chattr -i webshell.php 解除锁定
lsattr webshell.php 属性查看
rm -rf webshell.php 删除⽂件

  1. 可疑文件可能被touch命令修改过文件时间来混淆,可用stat命令来确认。
    在这里插入图片描述

2.5.2 系统环境变量

分析有无敏感可疑信息

echo $PATH
set
cat ~/.bashrc

2.5.3 命令被替换排查

  • 通常被替换的程序有login、ls、ps、ifconfig、du、find、netstat、ss等。执行一些命令参数,查看程序是否被替换。
  • 按时间排序查看二进制命令目录列表,查看是否有修改的痕迹
ls -alt /bin/ | head -n 10
ls -alt /usr/bin | head -n 10

在这里插入图片描述

2.5.4 异常流量

后门不一定会是TCP的,可能是走的其他协议比如DNS后门。

# 捕获DNS和ICMP的流量
tcpdump -i eth0 'icmp or (udp port 53)'

在这里插入图片描述

2.6 自动化查杀

2.6.1 Rootkit查杀

  • chkrootkit 网址:http://www.chkrootkit.org
# 使用方法:
wget ftp://ftp.pangeia.com.br/pub/seg/pac/chkrootkit.tar.gz
tar zxvf chkrootkit.tar.gz
cd chkrootkit-0.52
make sense
#编译完成没有报错的话执行检查
./chkrootkit
  • rkhunter 网址:http://rkhunter.sourceforge.net
# 使用方法:
wget https://nchc.dl.sourceforge.net/project/rkhunter/rkhunter/1.4.4/rkhunter-1.4.4.tar.gz
tar -zxvf rkhunter-1.4.4.tar.gz
cd rkhunter-1.4.4
./installer.sh --install
rkhunter -c

2.6.2 病毒查杀

  • Clamav 网址:http://www.clamav.net/download.html
    安装方式1:
#安装 zlib:
wget http://nchc.dl.sourceforge.net/project/libpng/zlib/1.2.7/zlib-1.2.7.tar.gz 
tar -zxvf  zlib-1.2.7.tar.gz
cd zlib-1.2.7
#安装一下gcc编译环境: yum install gcc
CFLAGS="-O3 -fPIC" ./configure --prefix= /usr/local/zlib/
make && make install

#2、添加用户组 clamav 和组成员 clamav:
groupadd clamav
useradd -g clamav -s /bin/false -c "Clam AntiVirus" clamav

#3、安装 Clamav
tar –zxvf clamav-0.97.6.tar.gz
cd clamav-0.97.6
./configure --prefix=/opt/clamav --disable-clamav -with-zlib=/usr/local/zlib
make
make install

#4、配置 Clamav
mkdir /opt/clamav/logs
mkdir /opt/clamav/updata
touch /opt/clamav/logs/freshclam.log
touch /opt/clamav/logs/clamd.log
cd /opt/clamav/logs
chown clamav:clamav clamd.log
chown clamav:clamav freshclam.log

#5、ClamAV 使用:
/opt/clamav/bin/freshclam 升级病毒库
./clamscan –h 查看相应的帮助信息
./clamscan -r /home  扫描所有用户的主目录就使用
./clamscan -r --bell -i /bin  扫描bin目录并且显示有问题的文件的扫描结果

安装方式2:

#安装
yum install -y clamav
#更新病毒库
freshclam
#扫描方法
clamscan -r /etc --max-dir-recursion=5 -l /root/etcclamav.log
clamscan -r /bin --max-dir-recursion=5 -l /root/binclamav.log
clamscan -r /usr --max-dir-recursion=5 -l /root/usrclamav.log
#扫描并杀毒
clamscan -r  --remove  /usr/bin/bsd-port
clamscan -r  --remove  /usr/bin/
clamscan -r --remove  /usr/local/zabbix/sbin
#查看日志发现
cat /root/usrclamav.log |grep FOUND

2.6.3 RPM check 检查(不适用Ubuntu)

系统完整性可以通过rpm自带的-Va来校验检查所有的rpm软件包,查看哪些命令是否被替换了,防止rpm也被替换,上传一个安全干净稳定版本rpm二进制到服务器上进行检查。

./rpm -Va > rpm.log

如果一切均校验正常将不会产生任何输出,如果有不一致的地方,就会显示出来,输出格式是8位长字符串,每个字符都用以表示文件与RPM数据库中一种属性的比较结果 ,如果是. (点) 则表示测试通过。

验证内容中的8个信息的具体内容如下:
        S         文件大小是否改变
        M         文件的类型或文件的权限(rwx)是否被改变
        5         文件MD5校验是否改变(可以看成文件内容是否改变)
        D         设备中,从代码是否改变
        L         文件路径是否改变
        U         文件的属主(所有者)是否改变
        G         文件的属组是否改变
        T         文件的修改时间是否改变

如果命令被替换了,如果还原回来:

文件提取还原案例:
rpm  -qf /bin/ls  查询 ls 命令属于哪个软件包
mv  /bin/ls /tmp  先把 ls 转移到 tmp 目录下,造成 ls 命令丢失的假象
rpm2cpio /mnt/cdrom/Packages/coreutils-8.4-19.el6.i686.rpm | cpio -idv ./bin/ls 提取 rpm 包中 ls 命令到当前目录的 /bin/ls 下
cp /root/bin/ls  /bin/ 把 ls 命令复制到 /bin/ 目录 修复文件丢失

2.7 Github优秀脚本

  • https://github.com/al0ne/LinuxCheck(一个linux信息搜集小脚本 主要用于应急响应,在Debian或Centos下都可使用)
  • https://github.com/grayddq/GScan(本程序旨在为安全应急响应人员对Linux主机排查时提供便利,实现主机侧Checklist的自动全面化检测,根据检测结果自动数据聚合,进行黑客攻击路径溯源。)

3. Web入侵排查

3.1 Webshell排查

3.1 WEB日志

  • 查看日志中是否存在可疑的可执行文件,如upload/aaa/ias.php、upload/index.jsp等

3.2 查找异常修改时间的文件

如果有安全设备更好,比如青藤云,可以直接分析时间段内落地的文件。

  • Linux
    参考2.5.1
  • Windows
    参考1.4.1、1.4.2

3.3 内存马

  • 重启(暴力清除,而且可能无法提取内存马)
  • arthas https://arthas.aliyun.com/doc/
  • java-memshell-scanner https://github.com/c0ny1/java-memshell-scanner
  • FindShell https://github.com/geekmc/FindShell?tab=readme-ov-file
  • copagent https://github.com/LandGrey/copagent

3.4 文件对比

如果代码量太大的情况下,可以通过对比上个版本代码和现有代码的差异性,来确定修改过的文件
在这里插入图片描述

3.2 Webshell查杀工具

3.2.1 D盾_Web查杀

阿D出品,使用自行研发不分扩展名的代码分析引擎,能分析更为隐藏的 WebShell 后门行为。
兼容性:只提供 Windows 版本。
工具下载地址:http://www.d99net.net

3.2.2 河马

专注 WebShell 查杀研究,拥有海量 WebShell 样本和自主查杀技术,采用传统特征+云端大数据双引擎的查杀技术。查杀速度快、精度高、误报低。
兼容性:支持 Windows、Linux,支持在线查杀。
官方网站:https://www.shellpub.com

3.2.3 Web Shell Detector

Web Shell Detector 具有 WebShell 签名数据库,可帮助识别高达 99% 的 WebShell。
兼容性:提供 PHP、Python 脚本,可跨平台,在线检测。
官方网站:http://www.shelldetector.com
github项目地址:https://github.com/emposha/PHP-Shell-Detector

3.2.4 CloudWalker(牧云)

一个可执行的命令行版本 Webshell 检测工具。目前,项目已停止更新。
兼容性:提供 Linux版本,Windows 暂不支持。
在线查杀 demo:https://webshellchop.chaitin.cn
GitHub 项目地址:https://github.com/chaitin/cloudwalker

3.2.5 PHP Malware Finder

PHP-malware-finder 是一款优秀的检测webshell和恶意软件混淆代码的工具
兼容性:提供Linux 版本,Windows 暂不支持。
GitHub 项目地址:https://github.com/jvoisin/php-malware-finder

3.2.6 findWebshell

这个项目是一款基于 Python 开发的 WebShell 检查工具,可以根据特征码匹配检查任意类型的 WebShell 后门。
GitHub 项目地址:https://github.com/he1m4n6a/findWebshell

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值