Skip to content

Latest commit

 

History

History
452 lines (269 loc) · 14.8 KB

二.网络安全响应基础技能.md

File metadata and controls

452 lines (269 loc) · 14.8 KB

1.系统排查

在进行受害主机排查时,首先要对主机系统进行基本排查,方便对受害主机有一个初步的了解

1.1系统基本信息

在进行受害主机排查时,首先要对主机系统进行基本排查,方便对受害主机有一个初步的了解

1)CPU信息在命令行中输入【lscpu】命令,可查看CPU相关信息,包括型号、主频、内核等信息,如图2.1.8所示。

lscpu

image-20220713110449823

2)操作系统信息在命令行中输入【uname-a】命令,可查看当前操作系统信息,如图2.1.9所示

image-20220713110502871

uname -a

image-20220713110521235

3)模块信息在命令行中输入【lsmod】命令,可查看所有已载入系统的模块信息,如图2.1.11所示。

lsmod

image-20220713110532318

1.2用户信息

在服务器被入侵后,攻击者可能会建立相关账户(有时是隐藏或克隆账户),方便进行远程控制。攻击者会采用的方法主要有如下几种:第1种是最明目张胆的,即直接建立一个新的账户(有时是为了混淆视听,账户名称与系统常用名称相似);第2种是激活一个系统中的默认账户,但这个账户是不经常使用的;第3种是建立一个隐藏账户(在Windows系统中,一般在账户名称最后加$)。无论攻击者采用哪种方法,都会在获取账户后,使用工具或是利用相关漏洞将这个账户提升到管理员权限,然后通过这个账户任意控制计算机。

1)查看系统所有用户信息

cat /etc/passwd

各项用冒号隔开,分别表示:

用户名、密码(加密后)、用户ID、用户组ID、注释、用户主目录、默认登录shell。查询的用户信息中,最后显示bin/bash的表示账户状态可登录;显示sbin/nologin的表示账户状态不可登录。

image-20220713110542298

2)分析超级权限账户

awk -F: '{if($3==0) print $1}' /etc/passwd
AWK 是一种处理文本文件的语言,是一个强大的文本分析工具

语法
awk [选项参数] 'script' var=value file(s)
或
awk [选项参数] -f scriptfile var=value file(s)

选项参数:
-F fs or --field-separator fs
指定输入文件折分隔符,fs是一个字符串或者是一个正则表达式,如-F:。

image-20220713110554713

可查询可登录账户UID为0的账户,如图2.1.21所示。root是UID为0的可登录账户,如果出现其他为0的账户,就要重点排查。

3)查看可登录的用户

cat /etc/passwd | grep '/bin/bash'
Linux grep 命令用于查找文件里符合条件的字符串。
grep 指令用于查找内容包含指定的范本样式的文件,如果发现某文件的内容符合所指定的范本样式,预设 grep 指令会把含有范本样式的那一列显示出来。若不指定任何文件名称,或是所给予的文件名为 -,则 grep 指令会从标准输入设备读取数据。

语法
grep [-abcEFGhHilLnqrsvVwxy][-A<显示行数>][-B<显示列数>][-C<显示列数>][-d<进行动作>][-e<范本样式>][-f<范本文件>][--help][范本样式][文件或目录...]

参数:
-a 或 --text : 不要忽略二进制的数据。
-A<显示行数> 或 --after-context=<显示行数> : 除了显示符合范本样式的那一列之外,并显示该行之后的内容。
-b 或 --byte-offset : 在显示符合样式的那一行之前,标示出该行第一个字符的编号。
-B<显示行数> 或 --before-context=<显示行数> : 除了显示符合样式的那一行之外,并显示该行之前的内容。
-c 或 --count : 计算符合样式的列数。
etc..

image-20220713110629002

如上图所示,root和changzw是可登录的账户

4)查看用户错误登录信息

lastb
lastb |more
用于内容太多分页显示

可查看显示用户错误的登录列表,包括错误的登录方法、IP地址、时间等

image-20220713110645750

5)查看所有用户最后的登录信息

lastlog

image-20220713110655941

6)查看用户最近登录信息

last

image-20220713110713363

7)查看当前用户登录情况

who

image-20220713110721544

8)查看空口令账户

awk -F: 'length($2)==0 {print $1}' /etc/shadow

image-20220713110730430

用户admin未设置登录口令

1.3启动项

启动项是恶意病毒实现持久化驻留的一种常用手段,使用以下方法可以查找启动项相关内容。

使用【cat /etc/init.d/rc.local】命令,可查看init.d 文件夹下的rc.local文件内容。

使用【cat /etc/rc.local】命令,可查看rc.local文件内容。

使用【ls -alt /etc/init.d】命令,可查看init.d文件夹下所有文件的详细信息,如图所示,框内的文件是某挖矿木马的启动项。

ls命令
Linux ls(英文全拼:list files)命令用于显示指定工作目录下之内容(列出目前工作目录所含之文件及子目录)。

语法
 ls [-alrtAFR] [name...]
 
参数 :
-a 显示所有文件及目录 (. 开头的隐藏文件也会列出)
-l 除文件名称外,亦将文件型态、权限、拥有者、文件大小等资讯详细列出
-r 将文件以相反次序显示(原定依英文字母次序)
-t 将文件依建立时间之先后次序列出
-A 同 -a ,但不列出 "." (目前目录) 及 ".." (父目录)
-F 在列出的文件名称后加一符号;例如可执行档则加 "*", 目录则加 "/"
-R 若目录下有文件,则以下之文件亦皆依序列出

image-20220713110752325

1.4任务计划

在Linux系统中,任务计划也是维持权限和远程下载恶意软件的一种手段。

一般有以下两种方法可以查看任务计划。

![image-20220222110001175](/Users/changzw/Library/Application Support/typora-user-images/image-20220222110001175.png)

(1)在命令行中输入【crontab -l】命令,可查看当前的任务计划,也可以指定用户进行查看,如输入命令【crontab -u root -l】,可查看root用户的任务计划,以确认是否有后门木马程序启动相关信息。如图所示,使用命令【crontab -l】后,查询到一个挖矿恶意程序的任务计划设置,其会每隔12分钟远程下载恶意网站上的crontab.sh脚本文件。

image-20220713110803012

(2)查看etc目录下的任务计划文件。

一般在Linux系统中的任务计划文件是以cron开头的,可以利用正则表达式的筛选出etc目录下的所有以cron开头的文件,具体表达式为/etc/cron。例如,查看etc目录下的所有任务计划文件就可以输入【ls /etc/cron*】命令,如图所示:

image-20220713110814264

image-20220713110826231

crontab命令




2.进程排查

在命令行中输入【netstat】网络连接命令,可分析可疑端口、可疑IP地址、可疑PID及程序进程。

如图所示,PID为2963的进程存在恶意外链情况。

image-20220713110836328

根据PID的值查看其对应的可执行程序。

ls -alt /proc/PID

使用【ls -alt /proc/2963】命令,可查看PID为2963的进程的可执行程序。

image-20220713110846757

也可以利用【lsof-p PID】命令,查看进程所打开的文件。如图2.2.17所示,使用【lsof-p 2963】命令,可查看PID为2963的进程所打开的文件,发现文件mbrn为可疑文件。

image-20220713110857915

结束进程:

kill -9 Pid

删除恶意文件:

rm -rf filename

如果root用户都无法删除相关文件,那么很可能是因为该文件被加上了i属性

查看文件属性:

lsatter filename

移除i属性:

chattr -i filename

有些攻击者会将进程隐藏,以躲避排查,因此查看隐藏进程同样重要。按照顺序执行

ps -ef | awk '{print}' | sort -n | uniq>1
ls /proc | sort -n | uniq>2
diff 1 2

可以查看隐藏进程,如图所示。

image-20220713110911302

对于挖矿进程的排查,可使用【top】命令查看相关资源占用率较高的进程,之后进行定位。如图所示,发现PID为29245的进程的CPU占用率较高,因此可进行重点排查。

image-20220713110921429

2.3服务排查

服务可以理解为运行在后台的进程。这些服务可以在计算机启动时自动启动,也可以暂停和重新启动,而且不显示任何用户界面。服务非常适合在服务器上使用,通常在为了不影响在同一台计算机上工作的其他用户,且需要长时间运行功能时使用。在应急响应排查过程中,服务作为一种运行在后台的进程,是恶意软件常用的驻留方法。

查看当前服务器的所有服务

service	 --status-all

查看当前所有正在运行的服务

servive --status-all | grep running

查看指定服务的运行状态,如httpd

servive --status-all | grep httpd

image-20220713110930426

2.4文件痕迹排查

在应急响应排查的过程中,由于大部分的恶意软件、木马、后门等都会在文件维度上留下痕迹,因此对文件痕迹的排查必不可少。一般,可以从以下几方面对文件痕迹进行排查:

(1)对恶意软件常用的敏感路径进行排查;

(2)在确定了应急响应事件的时间点后,对时间点前后的文件进行排查;

(3)对带有特征的恶意软件进行排查,这些特征包括代码关键字或关键函数、文件权限特征等。

1)敏感目录

(1)/tmp目录和命令目录/usr/bin/usr/sbin等经常作为恶意软件下载目录及相关文件被替换的目录。文件名为crloger8的木马下载到/tmp目录下,如图2.4.12所示:

image-20220713110940260

(2)~/.ssh及/etc/ssh也经常作为一些后门配置的路径,需要重点检查

~代表什么:
~在linux中代表用户主目录(家目录)
对一般用户来说,~代表/home/用户名
对root用户来说,~表示/root

2)时间点查找

(1)通过列出攻击日期内变动的文件,可发现相关的恶意软件。通过【find】命令可对某一时间段内增加的文件进行查找。以下为常用的【find】命令。

find:在指定目录下查找文件。

find
find path -option

-cmin n : 在过去 n 分钟内被修改过
-ctime n : 在过去n天内被修改过的文件
-ipath p, -path p : 路径名称符合 p 的文件,ipath 会忽略大小写
-name name, -iname name : 文件名称符合 name 的文件。iname 会忽略大小写

实例:
将当前目录及其子目录下所有文件后缀为 .c 的文件列出来:
# find . -name "*.c"
将当前目录及其子目录中的所有文件列出:
# find . -type f
将当前目录及其子目录下所有最近 20 天内更新过的文件列出:
# find . -ctime -20
3)特殊文件

Linux系统中的恶意文件存在特定的设置、特定的关键字信息等。Linux系统中的几种特殊文件类型可以按照以下方法进行排查。

(1)特殊权限文件查找。如图2.4.17所示是查找777权限的文件,使用命令【find/tmp-perm777】,可发现crloger8文件。

image-20220713110952835

4)Linux后门检测

可以使用第三方查杀工具,如chkrootkit、rkhunter进行查杀

image-20220713111002873

image-20220713111016403

2.5日志分析

1)日志概述

Linux系统中的日志一般存放在目录“/var/log/”下,具体的日志功能如下:

/var/log/wtmp:记录登录进入、退出、数据交换、关机和重启,即last。

/var/log/cron:记录与定时任务相关的日志信息。

/var/log/messages:记录系统启动后的信息和错误日志,也记录了某个用户切换到root权限的日志。

/var/log/apache2/access.log:记录Apache的访问日志。

/var/log/auth.log:记录系统授权信息,包括用户登录和使用的权限机制等。

/var/log/userlog:记录所有等级用户信息的日志。

/var/log/xferlog(vsftpd.log):记录Linux FTP日志。

/var/log/lastlog:记录登录的用户,可以使用命令lastlog查看。

/var/log/secure:记录大多数应用输入的账号与密码,以及登录成功与否。

/var/log/faillog:记录登录系统不成功的账号信息。通过查看相关的日志文件可以获取相关的日志信息。以下列举常用的日志使用方法。

2)日志分析

对于Linux系统日志的分析主要使用【grep】、【sed】、【sort】和【awk】等命令。

常用查询日志命令及功能如下:

查询最后10行的日志:

tail-n 10 test.log

查询10行之后的所有日志:

tail-n+10 test.log

查询头10行的日志:

head-n 10 test.log

查找指定时间段日志的命令如下:

sed-n '/2014-12-17 16:17:20/,/2014-12-1716:17:36/p' test.log
grep '2014-12-17 16:17:20' test.log

查看暴力破解服务器的ip和攻击次数:

cat /var/log/secure | awk '/Failed/{print $(NF-3)}' | sort | uniq -c | awk '{print $2" = "$1;}'

2.6内存分析

2.7流量分析

工具wireshark

2.8威胁情报

在应急响应中,威胁情报类似一个多维度的知识库,可以对以往相似的恶意元素进行查询。很多时候,结合威胁情报可以从多维度快速地了解攻击者的信息。SANS研究院对威胁情报的定义是,针对安全威胁、威胁者、利用、恶意软件、漏洞和危害指标,所收集的用于评估和应用的数据集。

在威胁情报中,经常会出现IOC这个概念。IOC(Indicator of Compromise)通常指在检测或取证中,具有高置信度的威胁对象或特征信息。在应急响应中,威胁情报平台查询到的信息一般都属于IOC范畴,以下介绍部分实例。例如,对恶意IP地址101.99.84.136进行查询,IP地址的情报标签显示是境外IDC、远控木马、GenericTrojan、Compromised、C&C、Ransomware、Satan、CobaltStrike、勒索软件,展示了各种恶意行为,如图所示。

image-20220713111027646