Linux应急响应

用户信息

方向

查看可登录的用户:

cat /etc/passwd | grep /bin/bash
awk -F: '{if($7!="/usr/sbin/nologin")print $1)}' /etc/passwd
# 除去不可登录的用户,看有没有新增的

查看是否有被添加的高权限用户,uid为0默认系统只用一个root:

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

更多时候某些普通用户可能存在suid滥用,需要查询有sudo权限的用户。

more /etc/sudoers | grep -v "^#\|^$" | grep "ALL=(ALL)"

查询可以远程登录的帐号信息,要注意的就是空密码只能本机登录不能远程。

awk '/\$1|\$6/{print $1}' /etc/shadow

查看/etc/passwd上次修改的时间,可以通过对比判断是否存在问题。

stat /etc/passwd

解决方案

直接警用账号,使其无法登录。

usermod -L user

完全删除user,同时将/home目录下的user目录一并删除。

userdel -rf user

不过一般来说Linux下攻击者一般都不会添加账号,动静太大了。

系统日志

总结常见的:

日志 描述
/var/log/cron 系统定时任务相关的日志
/var/log/mailog 记录邮件信息
/var/log/message 记录Linux系统的绝大多数重要信息
/var/log/btmp 错误登录日志,使用lastb命令查看
/var/log/lastlog 系统中所有用户最后一次登录的日志,使用lastlog命令查看
/var/log/wtmp 永久记录所有用户的登录、注销信息,同时记录系统的启动、重启、关机事件,使用last命令查看
/var/log/utmp 记录当前登录的用户信息,使用w/who/users等命令查看
/var/log/secure 涉及账号和密码的程序都会记录,例如SSH、su切换用户、sudo授权、添加用户和修改用户密码

历史命令

使用history可以列出最近的历史命令,但是可以显示的条数有限制。可以通过修改 /etc/profile文件来修改保存历史命令的最大数量。

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

但另外一个问题是,history中存储的可以通过history -c 被攻击者清空,但是他并不会清空保存在文件中的记录,当系统关机/重启后会更新到~/.bash_history 文件中。所以必须删除~/.bash_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/profilie更新文件生效之后,使用history时将可以看到登录的 IP 地址、执行命令时间。

异常文件

根据名称

若不区分大小写就使用-iname

find / -name shell.*

根据大小

通过文件大小的区间来判断存在的文件是否可能为木马。

find / -size +1000M
# +1000M表示大于1000M的文件,-10M代表小于10M的文件
find ./ -size -221c -size +219c -exec ls -lh {} \;

根据时间

列出最近15天内修改过了的文件。比如下面的结果中hermoinesnape的公钥均有变动,且hermoine.bash_history有变动,就很有可能被修改了公钥进行登录。

find / -mtime -15 -ls  | more

这样列出来的数据量会很大,有时候只想查看是否有webshell或者远控木马,可以过滤出修改的php文件,比如这里的index和error都有改动,可能就是被挂黑页或者是攻击者通过404反弹shell,查看index可以发现疑似webshell的语句。

find / -mtime -15 -name "*.php"

其他参数的使用:

-atime 最后一次访问时间:查找在 n*24 小时内被访问过的文件。
-ctime 文件内容修改时间:查找在 n*24 小时内状态发生变化的文件(例如权限)。
-mtime 最后一次状态的修改时间:查找在 n*24 小时内被修改过的文件(包括文件权限,所有者/组,文件大小等)。 +n:查找比 n 天前更早的文件或目录。
-n:查找在 n 天内更改过属性的文件或目录。
n:查找在 n 天前(指定那一天)更改过属性的文件或目录。

根据可见性

查看隐藏文件。

ls -ar |grep "^\."

根据权限

只看文件权限的话就使用-perm参数指定,但是排查时间就可能很长。

find / -perm 600

如果需要查看属主是root的文件,则可以用-type f指定要查找的是文件。

find ./ -user root -type f

而如果没有属主或属组的文件或者目录,就很有可能被恶意删除或者修改了用户或组信息,也有可能是被上传到系统中的存在恶意代码的内容。可以如下列出这些文件:

find / -nouser -o -nogroup

若不需要查看内容而是同时删除就加上-delete参数。

find / -nouser -o -nogroup -delete

计划任务、自启动

列出所有已启动的服务

systemctl list-unit-files | grep enabled

查看计划任务,如果需要看特定用户就用-u 指定就行,如看root的:

crontab -u root -l

计划任务保存在/var/spool/cron/{user}中,而上面的效果等同于cat /var/spool/cron/crontabs/root

对于这些任务,如需编辑则使用- e ,但/etc/crontab是系统级别的定时任务,只有root账户可以修改。删除特定用户的就使用 -r

服务、模块

排查可疑服务。

root@Nagini:~# service --status-all
[ - ] anacron
[ - ] apache-htcacheclean
[ + ] apache2
[ + ] apparmor
[ - ] bluetooth
[ - ] console-setup.sh
[ + ] cron
[ + ] dbus
[ - ] hwclock.sh
[ - ] keyboard-setup.sh
[ + ] kmod
[ + ] mysql
[ - ] networking
[ - ] nginx
[ + ] procps
[ - ] rsync
[ + ] rsyslog
[ + ] ssh
[ + ] udev
root@Nagini:~#

列出所有已载入系统的模块:

root@Nagini:~# lsmod
Module Size Used by
vmwgfx 331776 1
crct10dif_pclmul 16384 0
ttm 126976 1 vmwgfx
crc32_pclmul 16384 0
snd_intel8x0 45056 0
drm_kms_helper 208896 1 vmwgfx
ghash_clmulni_intel 16384 0
snd_ac97_codec 147456 1 snd_intel8x0
ac97_bus 16384 1 snd_ac97_codec
pcspkr 16384 0
serio_raw 16384 0
drm 495616 4 vmwgfx,drm_kms_helper,ttm
evdev 28672 3
joydev 24576 0
snd_pcm 114688 2 snd_intel8x0,snd_ac97_codec
snd_timer 36864 1 snd_pcm
snd 94208 4 snd_intel8x0,snd_timer,snd_ac97_codec,snd_pcm
soundcore 16384 1 snd
vboxguest 40960 0
sg 36864 0
video 49152 0
ac 16384 0
battery 20480 0
button 20480 0
ip_tables 28672 0
x_tables 45056 1 ip_tables
autofs4 49152 2
ext4 745472 1
crc16 16384 1 ext4
mbcache 16384 1 ext4
jbd2 122880 1 ext4
crc32c_generic 16384 0
fscrypto 32768 1 ext4
ecb 16384 0
hid_generic 16384 0
usbhid 57344 0
hid 139264 2 usbhid,hid_generic
sr_mod 28672 0
cdrom 65536 1 sr_mod
sd_mod 61440 3
ata_generic 16384 0
crc32c_intel 24576 2
ata_piix 36864 0
ohci_pci 16384 0
ehci_pci 16384 0
ohci_hcd 61440 1 ohci_pci
ahci 40960 2
ehci_hcd 94208 1 ehci_pci
libahci 40960 1 ahci
libata 270336 4 ata_piix,libahci,ahci,ata_generic
aesni_intel 200704 0
aes_x86_64 20480 1 aesni_intel
crypto_simd 16384 1 aesni_intel
cryptd 28672 3 crypto_simd,ghash_clmulni_intel,aesni_intel
glue_helper 16384 1 aesni_intel
psmouse 172032 0
i2c_piix4 24576 0
usbcore 299008 5 ohci_hcd,ehci_pci,usbhid,ehci_hcd,ohci_pci
usb_common 16384 1 usbcore
e1000 155648 0
scsi_mod 249856 4 sd_mod,libata,sg,sr_mod
root@Nagini:~#

端口、进程

查看端口的连接情况:

netstat -anput | more

具体参数如下:

-a 显示所有连接和端口
-n 以数字形式显示ip和port
-t 显示tcp
-u 显示udp
-v 显示指令执行过程
-l 显示监听的服务
-s 显示网络工作信息统计表
-p 显示建立连接的进程名以及pid
ESTABLISHED 建立连接、LISTENING 侦听状态、TIME_WAIT 连接超时

如果有发现了可疑的外联ip,就可以根据pid查找其文件路径。

ls -l /proc/$pid

监控这个ip的通信进程。

while true; do netstat -antp | grep 10.10.10.1; done

查看进程使用ps -aux,若需要关联pid就用grep:

root@Nagini:~# ps -aux | grep 3306
root 1084 0.0 0.0 6076 888 pts/0 S+ 07:42 0:00 grep 3306

还可以通过查看cpu占用率前十的进程来查看是否有可疑的进程。

ps aux --sort=pcpu | head -10ps aux --sort=pcpu | head -10

同样的可以用top来动态的监控进程,按b可以根据使用情况进行排序。-p指定pid。

top -p $pid

工具

whoamifuck

传送门。手工排除太慢,先用工具再结合手工最佳。赋权后指定相应参数即可。

可以列举出很多信息,部分如下:

火麒麟

传送门

clone下来之后运行agent中的对应版本,之后输入start开开始,最后会得到一个后缀为.fkld的文件,将文件导入gui界面可以看到详细的信息。

河马webshell

快速配置一下,一般使用scan或者deepscan,后面跟上网页的路径即可。

wget -O /opt/hm-linux.tgz http://dl.shellpub.com/hm/latest/hm-linux-amd64.tgz?version=1.7.0
c
./hm -h

Linux应急响应总结——更新中的更多相关文章

  1. Linux应急响应基础

    文件排查 敏感目录文件分析 tmp目录 命令目录 /usr/bin /usr/sbin 开机启动项 /etc/init.d /etc/init.d是/etc/rc.d/init.d的软链接 文件时间 ...

  2. Linux应急响应(四):盖茨木马

    0x00 前言 ​ Linux盖茨木马是一类有着丰富历史,隐藏手法巧妙,网络攻击行为显著的DDoS木马,主要恶意特点是具备了后门程序,DDoS攻击的能力,并且会替换常用的系统文件进行伪装.木马得名于其 ...

  3. Linux应急响应(三):挖矿病毒

    0x00 前言 ​ 随着虚拟货币的疯狂炒作,利用挖矿脚本来实现流量变现,使得挖矿病毒成为不法分子利用最为频繁的攻击方式.新的挖矿攻击展现出了类似蠕虫的行为,并结合了高级攻击技术,以增加对目标服务器感染 ...

  4. Linux应急响应(二):捕捉短连接

    0x00 前言 ​ 短连接(short connnection)是相对于长连接而言的概念,指的是在数据传送过程中,只在需要发送数据时,才去建立一个连接,数据发送完成后,则断开此连接,即每次连接只完成一 ...

  5. 最全Linux应急响应技巧 【转】

    概述 Linux环境下处理应急响应事件往往会更加的棘手,因为相比于Windows,Linux没有像Autorun.procexp这样的应急响应利器,也没有统一的应急响应处理流程.所以,这篇文章将会对L ...

  6. Linux应急响应学习

    Linux应急响应-系统日志排查-溯源 溯源 找到攻击者.系统日志分析攻击者的ip  攻击者可能留下了一些代码 样本 网上的信息很大程度上是不可信的. 方法: 蜜罐  高交互的蜜罐 溯源: ip 日志 ...

  7. Linux应急响应(一):SSH暴力破解

    0x00 前言 ​ SSH 是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议,主要用于给远程登录会话数据进行加密,保证数据传输的安全.SSH口令长度太短或者复杂度不够,如仅包含数字,或仅包 ...

  8. Linux知识总结(更新中)

    Linux知识总结(更新中) 如何查找特定的文件 find find path [options] params 作用:在指定目录下查找文件 检索文件内容 grep grep [options] pa ...

  9. Linux应急响应入侵排查思路

    0x00 前言 ​ 当企业发生黑客入侵.系统崩溃或其它影响业务正常运行的安全事件时,急需第一时间进行处理,使企业的网络信息系统在最短时间内恢复正常工作,进一步查找入侵来源,还原入侵事故过程,同时给出解 ...

  10. Linux应急响应思路详谈

    一.主机篇: 1.自动化初筛,建议使用RootkitHunter (1)安装 $sudo wget https://jaist.dl.sourceforge.net/project/rkhunter/ ...

随机推荐

  1. Burp Suite抓包工具配置代理手机抓取数据包

    工作中很多手机上的问题因为环境差异导致无法在pc设备上完整的模拟真实物理手机,因此需要方法能抓取到手机设备上所有数据包发送详情.发现了这个好用的数据包抓取工具Burp Suite. 一.配置流程: 1 ...

  2. Ds100p -「数据结构百题」11~20

    11.P3203 [HNOI2010]弹飞绵羊 某天,\(Lostmonkey\) 发明了一种超级弹力装置,为了在他的绵羊朋友面前显摆,他邀请小绵羊一起玩个游戏. 游戏一开始,\(Lostmonkey ...

  3. PLC通过Modbus转Profinet网关连接变频器控制电机案例

    在本案例中,通过使用Modbus转Profinet网关(XD-MDPN100),PLC可以通过Profinet协议与变频器进行通信和控制.这样,PLC可以实现对电机的转速调节.启停控制等功能. 同时, ...

  4. 【matplotlib基础】--3D图形

    matplotlib 在1.0版本之前其实是不支持3D图形绘制的. 后来的版本中,matplotlib加入了3D图形的支持,不仅仅是为了使数据的展示更加生动和有趣.更重要的是,由于多了一个维度,扩展了 ...

  5. Fireboom on Sealos:半小时搞定一个月的接口工作

    后端日常开发工作中有 88% 的接口都是 CURD,占用了超过 6 成开发时间.这些工作枯燥乏味,且价值低下,不仅荒废了时间,还无法获得任何成就感.而 Fireboom 可在 2 分钟内,完成传统模式 ...

  6. 前端三件套系例之JS——JavaScript基础、JavaScript基本数据类型、JavaScript函数

    文章目录 1 JavaScript基础 1.JavaScript是什么 2.JavaScript介绍 2-1 ECMAScript和JavaScript的关系 2-2 ECMAScript的历史 3. ...

  7. 服务链路追踪 —— SpringCloud Sleuth

    Sleuth 简介 随着业务的发展,系统规模变得越来越大,微服务拆分越来越细,各微服务间的调用关系也越来越复杂.客户端请求在后端系统中会经过多个不同的微服务调用来协同产生最后的请求结果,几平每一个请求 ...

  8. hadoop集群搭建及编程实践

    Hadoop集群搭建 前期准备及JDK,hadoop安装 设置主机名和添加主机映射 验证连通性 SSH无密码登录 配置集群/分布式环境 修改workers 修改文件core-site.xml 修改hd ...

  9. 【纯干货】IOS手机使用Charles抓包

    一.Charles 下载地址 https://www.charlesproxy.com/ 二.Charles 激活 1.生成激活码 生成激活码:https://www.zzzmode.com/myto ...

  10. openwrt ping: sendto: Network unreachable解决办法

    root@OpenWrt:/# ping zhihu.com PING zhihu.com (103.41.167.234): 56 data bytes ping: sendto: Network ...