menu arrow_back 湛蓝安全空间 |狂野湛蓝,暴躁每天 chevron_right ... chevron_right 第三章:Linux实战篇 chevron_right 第4篇:盖茨木马.md
  • home 首页
  • brightness_4 暗黑模式
  • cloud
    xLIYhHS7e34ez7Ma
    cloud
    湛蓝安全
    code
    Github
    第4篇:盖茨木马.md
    4.25 KB / 2019-05-18 21:45:38
        ## 第4篇:盖茨木马
    
    ### 0x00 前言
    
    ​	Linux盖茨木马是一类有着丰富历史,隐藏手法巧妙,网络攻击行为显著的DDoS木马,主要恶意特点是具备了后门程序,DDoS攻击的能力,并且会替换常用的系统文件进行伪装。木马得名于其在变量函数的命名中,大量使用Gates这个单词。分析和清除盖茨木马的过程,可以发现有很多值得去学习和借鉴的地方。
    
    ### 0x01 应急场景
    
    ​	某天,网站管理员发现服务器CPU资源异常,几个异常进程占用大量网络带宽:
    
    ![](./image/linux-13-1.png) 
    
    ### 0x02 事件分析
    
    **异常IP连接:**
    
    ![](./image/linux-13-2.png)
    
    **异常进程:**
    
    ​         查看进行发现ps aux进程异常,进入该目录发现多个命令,猜测命令可能已被替换
    
    登录服务器,查看系统进程状态,发现不规则命名的异常进程、异常下载进程 :
    
    ![](./image/linux-13-3.png)
    
    **异常启动项**
    
    进入rc3.d目录可以发现多个异常进行:
    
    /etc/rc.d/rc3.d/S97DbSecuritySpt
    
    /etc/rc.d/rc3.d/S99selinux
    
    ![](./image/linux-13-4.png)
    
    ![](./image/linux-13-5.png)
    
    **搜索病毒原体**
    
    find / -size -1223124c -size +1223122c -exec ls -id {} \;   搜索1223123大小的文件 
    
    ![](./image/linux-13-6.png)
    
    从以上种种行为发现该病毒与“盖茨木马”有点类似,具体技术分析细节详见:
    
    > Linux平台“盖茨木马”分析
    >
    > http://www.freebuf.com/articles/system/117823.html
    >
    > 悬镜服务器卫士丨Linux平台“盖茨木马”分析
    >
    > http://www.sohu.com/a/117926079_515168
    
    手动清除木马过程: 
    
    ```
    1、简单判断有无木马
    #有无下列文件
    cat /etc/rc.d/init.d/selinux
    cat /etc/rc.d/init.d/DbSecuritySpt
    ls /usr/bin/bsd-port
    ls /usr/bin/dpkgd
    #查看大小是否正常
    ls -lh /bin/netstat
    ls -lh /bin/ps
    ls -lh /usr/sbin/lsof
    ls -lh /usr/sbin/ss
    
    2、上传如下命令到/root下
    ps netstat ss lsof
    
    3、删除如下目录及文件
    rm -rf /usr/bin/dpkgd (ps netstat lsof ss)
    rm -rf /usr/bin/bsd-port     #木马程序
    rm -f /usr/bin/.sshd         #木马后门
    rm -f /tmp/gates.lod
    rm -f /tmp/moni.lod
    rm -f /etc/rc.d/init.d/DbSecuritySpt(启动上述描述的那些木马变种程序)
    rm -f /etc/rc.d/rc1.d/S97DbSecuritySpt
    rm -f /etc/rc.d/rc2.d/S97DbSecuritySpt
    rm -f /etc/rc.d/rc3.d/S97DbSecuritySpt
    rm -f /etc/rc.d/rc4.d/S97DbSecuritySpt
    rm -f /etc/rc.d/rc5.d/S97DbSecuritySpt
    rm -f /etc/rc.d/init.d/selinux(默认是启动/usr/bin/bsd-port/getty)
    rm -f /etc/rc.d/rc1.d/S99selinux
    rm -f /etc/rc.d/rc2.d/S99selinux
    rm -f /etc/rc.d/rc3.d/S99selinux
    rm -f /etc/rc.d/rc4.d/S99selinux
    rm -f /etc/rc.d/rc5.d/S99selinux	
    4、找出异常程序并杀死
    5、删除含木马命令并重新安装
    ```
    
    ### 0x03 命令替换
    
    **RPM check检查:**
    
    ~~~
    系统完整性也可以通过rpm自带的-Va来校验检查所有的rpm软件包,有哪些被篡改了,防止rpm也被替换,上传一个安全干净稳定版本rpm二进制到服务器上进行检查
    ./rpm -Va > rpm.log
    如果一切均校验正常将不会产生任何输出。如果有不一致的地方,就会显示出来。输出格式是8位长字符串, ``c 用以指配置文件, 接着是文件名. 8位字符的每一个 用以表示文件与RPM数据库中一种属性的比较结果 。``. (点) 表示测试通过。.下面的字符表示对RPM软件包进行的某种测试失败:
    ~~~
    
    ![](./image/linux-13-7.png)
    
    **命令替换:**
    
    ~~~
    rpm2cpio 包全名 |  cpio -idv .文件绝对路径   rpm包中文件提取
    Rpm2cpio  将rpm包转换为cpio格式的命令 
    Cpio 是一个标准工具,它用于创建软件档案文件和从档案文件中提取文件
    
    Cpio 选项 < [文件|设备]
    -i:copy-in模式,还原
    -d:还原时自动新建目录
    -v:显示还原过程
    ~~~
    
    文件提取还原案例: 
    
    ~~~
    rpm  -qf /bin/ls  查询ls命令属于哪个软件包
    mv  /bin/ls /tmp  
    rpm2cpio /mnt/cdrom/Packages/coreutils-8.4-19.el6.i686.rpm | cpio -idv ./bin/ls 提取rpm包中ls命令到当前目录的/bin/ls下
    cp /root/bin/ls  /bin/ 把ls命令复制到/bin/目录 修复文件丢失
    
    挂载命令rpm包:
    mkdir  /mnt/chrom/  建立挂载点
    mount -t iso9660 /dev/cdrom  /mnt/cdrom/  挂在光盘
    mount/dev/sr0 /mnt/cdrom/
    
    卸载命令
    umount  设备文件名或挂载点
    umount /mnt/cdrom/
    ~~~
    
    ![](./image/linux-13-8.png)
    
    
    links
    file_download