系统漏洞
这里说下,项目从开发到部署,会使用到各种技术,不管是中间件,还是一些操作系统,都有可能成为渗透的一个点。
操作系统通常有些低级用户口令、端口漏洞等,不用的端口尽量都关掉。除非遇到ddos,那就没办法了。
尽量使用最新的被维护的版本,凡是漏洞,都会被公布出来,如果使用旧版本,懂点的hack几乎一个扫描过去,我方防御就会崩溃。
第一步,打开网络拓扑,启动实验虚拟机,查看虚拟机IP地址:
Centos Linux
第二步,进入靶机服务器CentOS Linux,调用实验环境。使用docker images命令查看靶机服务器上的Docker镜像环境,找到本次实验使用的镜像centos5,使用命令启动centos5镜像的靶机环境:
docker images
docker run --privileged=true –it centos5 /bin/bash
第三步,查看当前虚拟环境的系统,及其所处的目录:
1)使用lsb_release –a命令查看系统ID信息,返回报错,说明这是一个CentOS系统,使用uname –m命令查看系统位数为64位:
lsb_release -a
uname -m
2)使用pwd命令查看当前所在的目录,输入cd /root进入root目录,使用ls命令列出root目录下的文件,存在名为start.sh的启动脚本:
pwd
cd /root
ls
第四步,启动虚拟环境中的木马程序:
./start.sh
第五步,查看系统的进程信息:
1)使用ps –aux查看所有进程,经过排查我们发现了一个可疑进程,进程PID为33:
ps -aux
2)使用kill 33命令结束可疑进程:
kill 33
第六步,确定可疑进程为木马程序:
1)使用ps –aux命令查看所有进程,准备排查其他进程时,发现刚才的可疑进程仍在运行,进程的PID为107649:
ps -aux
2)使用kill -9 107649强制结束进程:
kill -9 [木马进程PID]
3)再次使用ps –aux命令查看所有进程,该进程依旧没有被结束掉,仍在系统中运行。这时候基本可以判定,这是一个顽固的木马程序。木马程序很可能是要进行网络通信的:
ps -aux
第七步,查看本机Socket连接找到可疑的端口:
使用netstat –a命令查看本机的所有Socket连接,连接数量较多,经过排查后,找到一个不常用的端口4257,这个端口侦听在本机的所有接口,并且允许任意的远程连接进行连接:
netstat -a
第八步,根据端口号找到占用的进程ID:
使用lsof –i:4257命令,发现4257端口被进程ID为57704的程序占用:
lsof -i:4257
第九步,确定木马进程所使用的端口号:
使用ps –aux查看所有进程,发现进程ID为57704的进程kill不掉的木马进程。由于木马无法kill掉,而且木马还在进行Socket连接,传输服务器的敏感信息,所以我们使用防火墙iptables设置规则,让木马离线无法进行远程通信:
ps -aux
第十步,配置iptables防火墙使木马离线:
使用命令iptables –t filter –A OUTPUT –m state –state NEW –j DROP通过iptables在output链上做限制,将从出口带宽状态为new的全部丢弃掉。使用ping命令测试无法正常使用,此时服务器已经离线:
iptables –t filter –A OUTPUT –m state –state NEW –j DROP
ping 8.8.8.8
第十一步,找到木马程序的父进程,分别结束掉父进程和木马进程:
1)使用ps –ef命令发现可疑进程的父进程PIID为26,并且还发现可疑进程一直在不断的变换自己的进程PID:
ps -ef
2)再次使用ps –ef命令查看所有进程,找到可疑进程的父进程:
ps -ef
3)使用kill 26结束木马父进程:
kill [木马父进程PID]
ps -ef
4)结束失去父进程的木马僵尸进程:
kill [木马僵尸进程PID]
子进程是木马程序的核心功能,一般负责侦听一个端口,反弹一个Shell实现远程操作的核心逻辑,父进程通常负责子进程的安全,其核心功能是时刻监测子进程是否被杀,如果被杀就重新启动,或者延时重新启动。
第十二步,系统加固,找到木马进程及其父进程的路径:
使用./start.sh命令重启木马环境,使用ps –ef命令发现木马进程的父进程还有父进程,接着分别找到木马进程的父进程及其父进程的父进程的路径:
./start.sh
ps -ef
2)使用ls /usr/bin/vifa命令和ls /usr/bin/virson命令分别查看木马程序和守护程序:
ls /usr/bin/virfa
ls /usr/bin/virson
第十三步,找到木马程序病原体:
根据我们的经验,通常木马程序的守护程序都是用Shell脚本写的,而木马程序都是用其他语言写好编译成二进制文件的,至于为什么要这样做,是因为简单快速,所以我们可以阅读守护程序的代码。
使用cat /usr/bin/virfa命令查看守护程序的代码,经过阅读找到了木马程序的病原体文件是/opt/virsou.sh。
cat /usr/bin/virfa
第十四步,依次查杀木马进程的父进程的父进程、木马进程的父进程、木马进程:
1)使用kill 23命令查杀木马进程的父进程的父进程:
kill [木马父进程的父进程PID]
2)使用kill 72713命令和kill 72726命令分别查杀木马进程的父进程和木马进程:
kill [木马父进程PID]
kill [木马进程PID]
第十五步,依次删除木马程序,木马程序的守护程序,木马程序的源文件:
1)使用rm –rf /usr/bin/virfa命令和rm –rf /usr/bin/virson命令依次删除木马程序的守护程序和木马程序,并使用ls /usr/bin | grep vir*命令查看确认已经全部删除:
rm -rf /usr/bin/virfa
rm -rf /usr/bin/virson
ls /usr/bin | grep vir*
2)使用ls /opt/virsou.sh命令查看木马程序的病原体文件,使用rm –rf /opt/virson命令删除木马程序的病原体文件。
ls /opt/virsou.sh
rm -rf /opt/virsou.sh