免责声明:本文旨在分享技术进行安全学习,禁止非法利用。

本文中我将完整的阐述如何通过建立一个非常邪恶的网络接入点来使得用户进行自动文件下载。整个过程中我将使用 Nexus 9 来运行Kali NetHunter 2.0,并使用TP-LINK TLWN722N (150Mbps 版本)作为我的二级网络接口。

工具(下载地址见文末)

Mana – 恶意接入点工具包。它能够实现比Karma (Freebuf相关介绍:http://www.freebuf.com/articles/77055.html)攻击的更高级版本,相对而言最显著的变化就是Mana可以响应其他的AP广播,而不是像Karma这样只是探测设备,但其最终的目标仍然还是欺骗用户连接到自己设置的AP上。此外,它还有许多新奇的邪恶的AP欺骗技巧。

(关于该工具的详细内容,建议可以看看Defcon 22 Talk 的内容,该工具就是在这里发布的。https://cyberarms.wordpress.com/2014/10/16/mana-tutorial-the-intelligent-rogue-wi-fi-router/

BackdoorFactory BDFProxy—— 被用于通过中间人攻击快速写入恶意payload。

一个错误的开始

这里由于我也希望可以向受害者提供互联网接入,从而可以在他们下载时部署我的后门,所以我还需要 Nexus 9的另一个wifi接口。权衡之后,我选择了低功耗并且能与kali兼容的TP-LINK TLWN722N(支持数据包注入)。

打开kali的NetHunter工具,以下是其导航目录:

Kali NetHunter 自带的Mana已经安装并准备好了,但是我并不能一键启动。

这时我就想,我是不是做错了什么?

而当我开始选择BDF选项时,甚至还出现了一个bdfproxy.cfg窗口。

即使是在我从eth0 切换到了 wlan1 并且反复检查了配置文件中的dhcpd 设置后,它仍不能正常运行,而且无法在日志中找到任何有关Mana 或者BDFProxy的记录。

于是我只好跑去玩了会游戏—。—

配置

接下来我进入了Mana的文件夹好好的摸索了一番:

啊哈,start-nat-simple-bdf-lollipop.sh 貌似有点戏,打开看看:

实际上,令人感到奇怪的是这文件的一切操作看起来都很简单。我永远都不知道在使用新工具的时候会发生什么事。这些操作是给设备分配一些变量,开启转发功能,启动一个接入点和DHCP,修改iptables的配置。

这里有提到一些配置文件,必须确保它们没有任何问题。

第一个是 /etc/mana-toolkit/hostapd-karma.confg:

然后检查 /etc/mana-toolkit/dhcpd.conf:

看起来我们正在使用谷歌的DNS,并且客户端的ip设置在10.0.0.0/24范围内。Cool beans(棒极了~)

继续检查在 /etc/bdfproxy/bdfproxy.cfg 下的BDFProxy配置文件(以下截图是配置文件中的主要部分):

看起来这里很有问题,这里配置的IP是反向Shells (192.168.1.168 和192.168.1.16) 需要连接的目的地址。根据dhcpd.conf (DNS配置)的设置,我们当前的设置是不正确的,我们应该在dhcpd.conf中指定路由器的IP, 使得所有的客户机指向10.0.0.1

可以使用SED命令来进行更换:

看下修改配置前后两个文件的差别:

可以看到所有的192.168.1.16都改成了10.0.0.1

启动这台机器

现在是时候启用Mana了:

打开一个新的终端并启动BDFProxy:

BDFProxy开启后,它就会创建一个 Metasploit源文件。一开始该文源件存在的地方并不明显—— 不在/etc/bdfproxy/,而是在

/usr/share/bdfproxy/bdfproxy_msf_resource.rc

该源文件将可以帮助我们处理反向Shells的链接,这时打开另一台终端,启动Metasploit工具:

被Metasploit启动后,我们可以看到该源文件被加载了。

这里我被卡了一下,虽然一切看起来都是正常的——Mana创建了一个AP,我可以连接并访问网络,通过Mana设置的 Iptables 可以正确的将我的流量从80端口转发到 BDFProxy正在监听的8080端口。但问题是BDFProxy是一个不透明的代理连接(mitmproxy下实际上是失败的),在我用笔记本电脑测试机连接到这个恶意AP时,我在所有的HTTP连接时都得到了这个错误:

HttpError('Invalid HTTP request form (expected: absolute, got: relative)',)

这时,我才发现我忘了修改bdfproxy.cfg的默认设置:

需要将其改为:

在此之后,bdfproxy.cfg将能够正常工作。我将我的笔记本连接到AP上,然后通过HTTP进行文件下载。我尝试下载了 Audacity、也测试下载了 Putty 和 PSFTP。

在下载时,BDFProxy会hook这些下载请求,然后自动将恶意代码插入到这些下载的工具中。

对于可执行文件的格式,它不仅适用于Windows EXE/ PE的,而且在Linux ELF和Mach-O下也可以(这意味着你可以使用OS X!) ,

BDF Proxy 是怎样进行工作的,做了什么?

在BDFProxy的配置文件/etc/bdfproxy/bdfproxy.cfg中你可以看到为了支持该可执行架构,其各个部分都包含了PATCH_TYPE和PATCH_METHOD:

在让被注入了恶意代码的工具运行时我遇到了一些问题。这里我建议所有遇到该问题的人可以进行apt-get更新以及通过使用不同的 PATCH_TYPE 和PATCH_METHOD 选项。

而在对这些选项进行深入时,必须要理解 BDFProxy 是怎样将我们的shellcode 增加到二进制文件的。这里我们还要先了解什么是二进制文件中的代码空区,SecureIdeas blog(链接:https://blog.secureideas.com/2015/05/patching-binaries-with-backdoor-factory.html)中利用BDF注入二进制文件的一篇文章对其进行了最简洁的解释:

代码空区是代码编译的产物。在某些时间中,代码编译器不得不通过填充一系列的0×00字节来填充某些区域。因此BDF 可以重写恶意代码到这些代码空区,并且因为是利用的已存在的空间,所以在你使用BDF时,不会发现文件的大小有变化。

补丁类型/修补方法

在BDFProxy中我们已经可以了解到PATCH _TYPEs 和 PATCH_METHODs的不同:

OnionDuke?

我没有用过onionduke攻击方法,也没有理由/欲望去对Tor出口节点进行投毒。这就是说,onionduke并不仅仅是被用于作为攻击向量。如果你的投毒目标有提防在下载文件时被做手脚,并且会对下载文件进行检查,这时使用onionduke攻击就会是一个不错的选择!

更多关于onionduke攻击的说明,请看2015黑帽大会上,BDF/BDFProxy 工具的作者的ppt

关于oninonduke攻击,Freebuf之前有过相关的报道也可进行参考:http://www.freebuf.com/news/52056.html

看完文章,赶快自己动手体验一下那种biubiu的快感吧—。—

工具地址:

mana:https://github.com/sensepost/mana

BackdoorFactory BDFProxy:https://github.com/secretsquirrel/BDFProxy

利用NET HUNTER建立一个自动文件下载的网络接入点的更多相关文章

  1. 如何建立一个完整的游戏AI

    http://blog.friskit.me/2012/04/how-to-build-a-perfect-game-ai/ 人工智能(Artificial Intelligence)在游戏中使用已经 ...

  2. 好像leeceode题目我的博客太长了,需要重新建立一个. leecode刷题第二个

    376. Wiggle Subsequence               自己没想出来,看了别人的分析. 主要是要分析出升序降序只跟临近的2个决定.虽然直觉上不是这样. 455. 分发饼干     ...

  3. vue+nodejs+express+mysql 建立一个在线网盘程序

    vue+nodejs+express+mysql 建立一个在线网盘程序 目录 vue+nodejs+express+mysql 建立一个在线网盘程序 第一章 开发环境准备 1.1 开发所用工具简介 1 ...

  4. 服务器(三):利用github的webhooks实现自动部署

    实现自动部署的关键就是利用github的webhooks,我们在github建立一个项目之后,在项目主页点击Settings,看到Webhooks点击打开可以添加一个链接,这里的意思是,github可 ...

  5. 机器学习 101 Mahout 简介 建立一个推荐引擎 使用 Mahout 实现集群 使用 Mahout 实现内容分类 结束语 下载资源

      机器学习 101 Mahout 简介 建立一个推荐引擎 使用 Mahout 实现集群 使用 Mahout 实现内容分类 结束语 下载资源 相关主题   在信息时代,公司和个人的成功越来越依赖于迅速 ...

  6. 从程序到系统:建立一个更智能的世界——记Joseph Sifakis“21世纪的计算”大会主题演讲

    Sifakis"21世纪的计算"大会主题演讲" title="从程序到系统:建立一个更智能的世界--记Joseph Sifakis"21世纪的计算&q ...

  7. VMware下利用ubuntu13.04建立嵌入式开发环境之一

    1.软件准备: (1) VMware网上很多,需要根据自己的需要选择,这里选用的VMware Workstation 9. (2)ubuntu  操作系统,同样根据自己的需要下载系统安装包.这里我选择 ...

  8. [转]使用Scrapy建立一个网站抓取器

    英文原文:Build a Website Crawler based upon Scrapy 标签: Scrapy Python 209人收藏此文章, 我要收藏renwofei423 推荐于 11个月 ...

  9. C++11实现一个自动注册的工厂

    实现动机 工厂方法是最简单地创建派生类对象的方法,也是很常用的,工厂方法内部使用switch-case根据不同的key去创建不同的派生类对象,下面是一个伪代码. Message* create(int ...

随机推荐

  1. [转]查看SQL Server被锁的表以及如何解锁

    本文转自:https://www.cnblogs.com/shy1766IT/p/6225694.html 锁定数据库的一个表的区别 SELECT * FROM table WITH (HOLDLOC ...

  2. eclipse相关问题处理

    maven,新建的web工程下,没有resource跟test目录,做法:https://blog.csdn.net/gengjianchun/article/details/78679036 项目右 ...

  3. oracle一个listener侦听多个实例的配置

    https://blog.csdn.net/silesilesile/article/details/79725337

  4. 2 字节的 UTF-8 序列的字节 2 无效 解决方法

    2 字节的 UTF-8 序列的字节 2 无效 解决方法: 用记事本打开xml文件,另存为 编码 选择 UTF-8,保存替换掉之前的文件,解决问题

  5. FUzhou 1607 Greedy division---因子个数问题。

    Problem 1607 Greedy division http://acm.fzu.edu.cn/problem.php?pid=1607 Accept: 402    Submit: 1463T ...

  6. 让iframe可编辑

    function EnableEdit() { var editor; editor = document.getElementById("HtmlEdit").contentWi ...

  7. [AngularJS] “多重路由”嵌套模块——AngularJS“路由”嵌套学习资料教程

    这是小编的一些学习资料,理论上只是为了自己以后学习需要的,但是还是需要认真对待的 以下内容仅供参考,请慎重使用学习 1.AngularJS路由嵌套 Angularjs本身自带路由模块,可以满足通过不同 ...

  8. nodejs学习 之 安装

    1. 官网找最新适合自己电脑的版本  下载  https://nodejs.org/en/download/ 2.我的是win7 x64选择了msi的安装包,安装过程修改安装的目标目录,最好不要放在c ...

  9. $.extend 的相关用法

    1.1 $.extend(result,item1,item2…..) 将所有的参数项都合并result中,返回result,会破坏result的结构. 1.2 $.extend({},item1,i ...

  10. 关于wp-autopost不能连续采集的问题,这里有解决方案

    经常采集一页两页就停下来了 完整的解决方案如下: php.ini 中 max_execution_time = 0 的设置只针对PHP本身起作用php-fpm 模式下 需要修改的参数是 php-fpm ...