处置手段
创造问题要处置,遵照原则:百分百确认是非法文件,报备记录关停,摸棱两可找卖力人确认,处置看沟通结果
环境信息:

把稳:linux版本之间有差异,详细以自己的系统版本为准
开机启动项伴随开机启动,一样平常生产做事器很少重启,但是为防止被控机器失落联部分木马会添加开机启动项作为复活手段。
/etc/rc.local#!
/etc/rc.d/rc.local
/bin/sh -e## rc.local## This script is executed at the end of each multiuser runlevel.# Ensure that the script will "exit 0" on success or any other# value on error.## To enable or disable this script, just change the execution# bits.## By default, this script does nothing.touch /root/1.txt
#!
/etc/rc.d/init.d/
/bin/bash# THIS FILE IS ADDED FOR COMPATIBILITY PURPOSES## It is highly advisable to create own systemd services or udev rules# to run scripts during boot instead of using this file.## In contrast to previous versions due to parallel execution during boot# this script will NOT be run after all other services.## Please note that you must run 'chmod +x /etc/rc.d/rc.local' to ensure# that this script will be executed during boot.touch /var/lock/subsys/localtouch /tmp/1.txt
这个目录下面放了可实行脚本或文件
/etc/rc.d/rc0.d/ rc1.d/ rc2.d/ rc3.d/ rc4.d/ rc5.d/ rc6.d/ rcS.d/
systemctl list-unit-files
...ssh.service enabled enabled ssh@.service static enabled sshd.service enabled enabled sudo.service masked enabled syslog.service enabled enabled system-update-cleanup.service static enabled systemd-ask-password-console.service static enabled systemd-ask-password-plymouth.service static enabled systemd-ask-password-wall.service static enabled systemd-backlight@.service static enabled ...
创造恶意做事,利用下面命令关停(以关闭ufw.service做事作为实例):
sudo systemctl stop ufw.service # 停滞做事sudo systemctl disable ufw.service # 删除开启启动
关错了,避免尴尬偷偷启动做事
sudo systemctl start ufw.service # 启动做事sudo systemctl enable ufw.service # 添加开启启动
环境变量配置文件
/etc/profile/etc/bashrc/etc/bash.bashrc ~/.bashrc~/.profile ~/.bash_profile
这些文件用于设置系环境变量或启动程序,每次Linux登入或切换用户都会触发这些文件。
Linux登入环境环境变量触发顺序
切换用户时也会触发环境变量文件
vulab@sechelper:~$ sudo su
~/.bash_logout
登出账户时触发。
vulab@sechelper:~$ exitlogout~/.bash_logout
各项资源非常进程是Linux当前正在处理的任务,当运行某个软件时将为其创建一个进程。
vulab@sechelper:~$ sudo ps -efcaux # 查看所有进程...www-data 97735 0.0 1.8 309560 65456 ? S Aug20 0:13 \_ php-fpm7.4syslog 785 0.0 0.1 224492 5528 ? Ssl Aug17 0:03 rsyslogdntp 796 0.0 0.1 74632 4240 ? Ssl Aug17 0:13 ntpdroot 802 0.0 0.2 17176 8044 ? Ss Aug17 0:03 systemd-logindroot 816 0.0 0.2 12172 7436 ? Ss Aug17 0:04 sshdroot 126262 0.0 0.2 13920 8852 ? Ss 15:47 0:00 \_ sshdubuntu 126363 0.0 0.1 14052 6260 ? S 15:47 0:00 \_ sshdubuntu 126364 0.0 0.1 8276 5216 pts/0 Ss 15:47 0:00 \_ bashroot 130670 0.0 0.1 9404 4752 pts/0 S 18:59 0:00 \_ sudoroot 130671 0.0 0.1 8260 4252 pts/0 S 18:59 0:00 \_ suroot 130672 0.0 0.1 7236 4056 pts/0 S 18:59 0:00 \_ bash...
查找进程文件位置
vulab@sechelper:~$ sudo lsof -p 948 # 查看pid为948的进程详细信息COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAMEdockerd 948 root cwd DIR 8,2 4096 2 /dockerd 948 root rtd DIR 8,2 4096 2 /dockerd 948 root txt REG 8,2 95757512 2883867 /usr/bin/dockerddockerd 948 root mem-W REG 8,2 32768 2231986 /var/lib/docker/buildkit/cache.db
vulab@sechelper:~$ sudo ls -al /proc/948/exe # 查看pid为948的进程文件绝对路径lrwxrwxrwx 1 root root 0 Aug 21 03:24 /proc/948/exe -> /usr/bin/dockerd
文件
浸染
cwd
符号链接(类似快捷办法)的是进程运行目录
exe
符号链接(类似快捷办法)的是实行程序的绝对路径
cmdline
符号链接(类似快捷办法)的是进程运行目录
environ
记录进程运行时系统的环境变量
CPU
CPU也称为中心处理器、主处理器或单处理器,是实行打算机指令得关键部件,某做事器溘然有一个进程占用的CPU远超平时,那么可能被植入了挖矿病毒。
排查话术:CPU是否远超平时居高不下,如果是的话那么可能被植入了挖矿病毒。
vulab@sechelper:~$ top # 排名越靠前占用的CPU越多
top命令结果
vulab@sechelper:~$ ps -aux| sort -k3nr | head -10root 12039 122 3.4 3554048 139720 ? Sl 08:18 0:02 /usr/local/jdk-17.0.3.1/bin/java -Djava.util.logging.config.file=/usr/local/apache-tomcat-10.0.22/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djdk.tls.ephemeralDHKeySize=2048 -Djava.protocol.handler.pkgs=org.apache.catalina.webresources -Dorg.apache.catalina.security.SecurityListener.UMASK=0027 -Dignore.endorsed.dirs= -classpath /usr/local/apache-tomcat-10.0.22/bin/bootstrap.jar:/usr/local/apache-tomcat-10.0.22/bin/tomcat-juli.jar -Dcatalina.base=/usr/local/apache-tomcat-10.0.22 -Dcatalina.home=/usr/local/apache-tomcat-10.0.22 -Djava.io.tmpdir=/usr/local/apache-tomcat-10.0.22/temp org.apache.catalina.startup.Bootstrap start...
内存
程序启动时会被系统读入内存,在实行的过程也不断的在内存中申请新的空间。
排查话术:最近内存是否溘然升高持续不下,如果是的话那么可能被植入了挖矿病毒。
vulab@sechelper:~$ ps -aux | sort -k4nr | head -10 # 内存占用最高的是个进程root 948 0.0 1.9 1308116 78424 ? Ssl 03:24 0:02 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sockroot 859 0.0 1.2 1355640 51364 ? Ssl 03:24 0:14 /usr/bin/containerdroot 851 0.0 1.0 874552 42960 ? Ssl 03:24 0:01 /usr/lib/snapd/snapdroot 890 0.0 0.5 107916 20864 ? Ssl 03:24 0:00 /usr/bin/python3 /usr/share/unattended-upgrades/unattended-upgrade-shutdown --wait-for-signal...
网络带宽
带宽也便是网速的最高上限,比如家里的100/M带宽,便是每秒100M的传输速率,带宽分为上行和下行对应着上传下载,某做事器上行流量比往常赶过几倍时,解释在外发大量的数据重点检讨是否为正常业务。
排查话术:网络流量高下行有非常吗?有非常的话是哪个IP?
网络占用须要安装软件赞助,应急时大部分情形都不许可随意安装软件,这时候就须要和运维的网络沟通,从设备上看下流量情形。
vulab@sechelper:~$ sudo apt-get install iftop # centos利用 yum install iftopReading package lists... DoneBuilding dependency tree Reading state information... DoneThe following NEW packages will be installed: iftop0 upgraded, 1 newly installed, 0 to remove and 54 not upgraded.Need to get 36.3 kB of archives.After this operation, 95.2 kB of additional disk space will be used.Get:1 http://cn.archive.ubuntu.com/ubuntu focal/universe amd64 iftop amd64 1.0~pre4-6build1 [36.3 kB]Fetched 36.3 kB in 1s (24.6 kB/s)Selecting previously unselected package iftop.(Reading database ... 108839 files and directories currently installed.)Preparing to unpack .../iftop_1.0~pre4-6build1_amd64.deb ...Unpacking iftop (1.0~pre4-6build1) ...Setting up iftop (1.0~pre4-6build1) ...Processing triggers for man-db (2.9.1-1) ...
利用iftop命令剖析网络时,须要指定网卡,一个生产机器做事器会有很多块网卡,有管理用的、业务用的或其它的,这时候要与运维沟通区分各个网卡的用场。
vulab@sechelper:~$ ip addr # ifconfig 查看所有网卡1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether 00:0c:29:23:3d:42 brd ff:ff:ff:ff:ff:ff inet 192.168.111.133/24 brd 192.168.111.255 scope global dynamic ens33 valid_lft 941sec preferred_lft 941sec inet6 fe80::20c:29ff:fe23:3d42/64 scope link valid_lft forever preferred_lft forever3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default link/ether 02:42:76:f7:a7:4b brd ff:ff:ff:ff:ff:ff inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0 valid_lft forever preferred_lft forever4: br-d9f18b6d603d: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default link/ether 02:42:8b:93:c0:83 brd ff:ff:ff:ff:ff:ff inet 172.18.0.1/16 brd 172.18.255.255 scope global br-d9f18b6d603d valid_lft forever preferred_lft forever inet6 fe80::42:8bff:fe93:c083/64 scope link valid_lft forever preferred_lft forever10: veth6a9efeb@if9: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master br-d9f18b6d603d state UP group default link/ether 76:0d:b7:6b:56:10 brd ff:ff:ff:ff:ff:ff link-netnsid 0 inet6 fe80::740d:b7ff:fe6b:5610/64 scope link valid_lft forever preferred_lft forever
vulab@sechelper:~$ sudo iftop -i ens33 -P # 指定ens33网卡,剖析其流量
iftop流量剖析
网络连接做事器每发出和吸收一个TCP/UDP要求都能看到连接(短韶光内)。
netstat 命令:
-a 显示所有-n 数字形式展示连接端口-t 仅查看TCP连接情形-u 仅查看UDP连接情形-p 显示干系程序名vulab@sechelper:~$ sudo netstat -antup # 我常常利用的一条命令,查看所有连接roto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 127.0.0.1:60801 0.0.0.0: LISTEN 1212/apache2 tcp 0 0 127.0.0.1:3306 0.0.0.0: LISTEN 1066/mysqld tcp 0 0 0.0.0.0:111 0.0.0.0: LISTEN 1/init tcp 0 0 0.0.0.0:80 0.0.0.0: LISTEN 1502/nginx: master tcp 0 0 10.0.4.16:53 0.0.0.0: LISTEN 771/named tcp 0 0 10.0.4.16:80 93.157.63.28:10959 SYN_RECV - tcp 0 0 10.0.4.16:35322 169.254.0.55:5574 ESTABLISHED 1316/YDService tcp 0 0 10.0.4.16:41805 192.112.36.4:53 TIME_WAIT - tcp 0 0 10.0.4.16:35978 169.254.0.138:8186 ESTABLISHED 58593/tat_agent tcp6 0 0 127.0.0.1:60800 ::: LISTEN 1580/java tcp6 0 0 :::111 ::: LISTEN 1/init ...
状态
浸染
LISTEN
监听TCP端口,等待远程连接
TIME-WAIT
等待一段韶光确保远程TCP中断要求
ESTABLISHED
打开着的连接
SYN_RECV
吸收和发送连接要求后等待确认连接要求确认的情形。
CLOSING
等待远程TCP对连接中断的确认
CLOSE
连接完备关闭
关闭进程
这里把稳一下,关停做事后进程是否会”复活“,如果恶意进程被kill后重新启动,那么肯定有其它地方有自启动方法,连续排查守护进程、定时任务、系统配置、做事和系统文件。
vulab@sechelper:~$ sudo kill -9 1434
威胁情报
威胁情报是识别和剖析网络威胁的过程。威胁情报平台可以查出一些域名和IP地址得信誉度,一旦创造它们存在网络攻击痕迹迅速封禁。
微步在线VirusTotal安恒威胁剖析平台深信服威胁情报中央VenusEye威胁情报中央360威胁情报中央Data Mining for Threat IntelligenceSSHSSH(Secure Shell)是一种加密的网络传输协议,常日利用SSH来传输命令行界面和远程实行命令。
账户密码
vulab@sechelper:~$ usersvulabvulab@sechelper:~$ cat /etc/passwdroot:x:0:0:root:/root:/bin/bash...systemd-coredump:x:999:999:systemd Core Dumper:/:/usr/sbin/nologinlxd:x:998:100::/var/snap/lxd/common/lxd:/bin/falsevulab:x:1000:1000::/home/vulab:/bin/bash
/bin/bash
账户可登录,登录后利用/bin/bash阐明实行脚本
/bin/false不可登录,不会有任何提示。
/usr/sbin/nologin不可登录,谢绝用户登录。
密钥修改
vulab@sechelper:~$ cat authorized_keys ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDH9DeY9Ry/8FSlIEKEU/HH2yaPklCf36/ePIW9oS/9i7QklEqvvrPEfhpcSH0by98a+AjktEoUqt3TRLvM4IHtr7/KAP0m8cFyN0wlpvmY2rqwko3kPbaVm4sb8Qxc4IJo/0HjRvTAzNvTzzT7unWLaPZ8vUyrDVooRJWdjwbxpq0wtBvcNci7//145sTocddJDvsnwT7ulE/QIdBWHQdtclUr5zqToSZvslFZHOvoPx34+65R48CrBaucvdBPPslno6FFecQmc0Cy5CSVMr6VM67YdJp/E7RGTyl5M8KlCwXHjEabA9dUaT9oMyoR1Jb1u2m1lZWjAx1PTZ86+22XtskCizG3+hZIdwsSvGwArAhBymnkAsNZso3zqHymbnsnJpZ22FCUs/Gb4YiDjFahC61WsAmfiag6eJwLApfe086QVAcVfSLZQ82ppFRZV79PM+wu2VU0sb1zmj5F97MaF7LbZB4+QPoL9mnpOcRY6Unbs+TFyp7Pp4W8+/HbI5U=
重装覆盖
vulab@sechelper:~$ ls -lt /usr/bin/ssh /usr/sbin/sshd # 不可靠,韶光可以被修改-rwxr-xr-x 1 root root 876328 Dec 2 2021 /usr/sbin/sshd-rwxr-xr-x 1 root root 789448 Dec 18 2015 /usr/bin/sshvulab@sechelper:~$ sudo touch -a -m -t 201512180130.09 /usr/bin/ssh # 修改ssh创建韶光vulab@sechelper:~$ ssh -VOpenSSH_8.2p1 Ubuntu-4ubuntu0.4, OpenSSL 1.1.1f 31 Mar 2020
参考:
openssh-backdoorssh做事是如何挟制密码定时定点实行Linux程序或脚本。
crontab
定时任务操持命令,下面几个是创建任务后保存的路径。
/var/spool/cron/ 目录里的任务以用户命名/etc/crontab 调度管理掩护任务/etc/cron.d/ 这个目录用来存放任何要实行的crontab文件或脚本。下面这些都是检讨重点工具/etc/cron.hourly/ 每小时实行一次/etc/cron.daily/ 每天实行一次/etc/cron.weekly/ 每周实行一次/etc/cron.monthly/ 每月实行一次扩展知识:
/etc/cron.allow 存放可创建定时任务账户,一行一个账户名,已创建的定时任务不受影响
vulab@sechelper:~$sudo cat /etc/cron.allowrootvulab@sechelper:~$ crontab -eYou (vulab) are not allowed to use this program (crontab)See crontab(1) for more information
/etc/cron.deny 存放不可创建定时任务账户,一行一个账户名,已创建的定时任务不受影响
vulab@sechelper:~$ crontab -eYou (vulab) are not allowed to use this program (crontab)See crontab(1) for more information
参考:
定时任务RootkitRootkit是指其紧张功能为:隐蔽其他程序进程的软件,可能是一个或一个以上的软件组合。在本日,Rootkit一词更多地是指被作为驱动程序,加载到操作系统内核中的恶意软件。
rootkit事理图
vulab@sechelper:~/1337kit$ sudo python3 builder.py --config config.yml # 编译rootkit[sudo] password for vulab: ████ ████████ ████████ ██████████ █████ ███ █████░░███ ███░░░░███ ███░░░░███░███░░░░███░░███ ░░░ ░░███ ░███ ░░░ ░███░░░ ░███░░░ ███ ░███ █████ ████ ███████ ░███ ██████░ ██████░ ███ ░███░░███ ░░███ ░░░███░ ░███ ░░░░░░███ ░░░░░░███ ███ ░██████░ ░███ ░███ ░███ ███ ░███ ███ ░███ ███ ░███░░███ ░███ ░███ ███ █████░░████████ ░░████████ ███ ████ █████ █████ ░░█████░░░░░ ░░░░░░░░ ░░░░░░░░ ░░░ ░░░░ ░░░░░ ░░░░░ ░░░░░LKM Rootkit Builder... LD [M] /tmp/ItclNzX3O3hJUXQ3/project.komake[1]: Leaving directory '/usr/src/linux-headers-5.4.0-109-generic'=== File /home/vulab/1337kit/project.ko created ===vulab@sechelper:~/1337kit$ sudo insmod project.ko # 将rootkit安装到内核vulab@sechelper:~/1337kit$ sudo lsmod # 查看内核模块vulab@sechelper:~/1337kit$ sudo rmmod project # 卸载内核模块
检讨系统是否被植入rootkit
vulab@sechelper:~$ sudo apt install chkrootkit # 安装chkrootkitvulab@sechelper:~$ sudo chkrootkit[sudo] password for vulab: ROOTDIR is `/'Checking `amd'... not foundChecking `basename'... not infectedChecking `biff'... not foundChecking `chfn'... not infectedChecking `chsh'... not infectedChecking `cron'... not infected...Searching for suspect PHP files... nothing foundSearching for anomalies in shell history files... nothing foundChecking `asp'... not infectedChecking `bindshell'... not infectedChecking `lkm'... chkproc: nothing detectedchkdirs: nothing detectedChecking `rexedcs'... not foundChecking `sniffer'... lo: not promisc and no packet ...Checking `w55808'... not infectedChecking `wted'... chkwtmp: nothing deletedChecking `scalper'... not infectedChecking `slapper'... not infectedChecking `z2'... chklastlog: nothing deletedChecking `chkutmp'... chkutmp: nothing deletedChecking `OSX_RSPLUG'... not tested
sudo apt install rkhunter # 安装rkhunter
rhkhunter 配置
vulab@sechelper:~$ sudo rkhunter --check[ Rootkit Hunter version 1.4.6 ]Checking system commands... Performing 'strings' command checks Checking 'strings' command [ OK ] Performing 'shared libraries' checks Checking for preloading variables [ None found ] Checking for preloaded libraries [ None found ] Checking LD_LIBRARY_PATH variable [ Not found ]...
隐蔽的rootkit如何删除
Rootkit在内核模块里找不到,那么就存在删除不掉的可能,这时候须要将传染系统以文件挂载到其它Linux系统上,进行打消操作。
参考:
rkhunter 官网chkrootkit 官网rootkit demo严重声明文中技能只可用于安全技能研究,任何造孽用场与作者无关,请勿用在生产环境安装测试rootkit。
关于应急相应-Linux 篇讲解完毕,关注 至察助安 "大众号获取更多优质网络安全知识,无优质不分享。
更多理解(https://blog.sechelper.com/2022/08/26/emergency-response/README/#more)