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

本文中我将完整的阐述如何通过建立一个非常邪恶的网络接入点来使得用户进行自动文件下载。整个过程中我将使用 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. Microsoft.AspNet.Identity 的简单使用

    要完成一个简单的注册,登陆,至少需要实现Identity中的3个接口 IUser IUserStore<TUser> : IDisposable where TUser : IUser I ...

  2. C#共享内存整理

    1.System.IO.MemoryMappedFiles 内存映射文件类 内存映射文件将文件的内容映射到应用程序的逻辑地址空间. 内存映射文件使程序员得以处理极大的文件(这是因为可以并发管理内存), ...

  3. IIS负载均衡-Application Request Route详解第一篇: ARR介绍

    IIS负载均衡-Application Request Route详解第一篇: ARR介绍 说到负载均衡,相信大家已经不再陌生了,本系列主要介绍在IIS中可以采用的负载均衡的软件:微软的Applica ...

  4. T-sql 编程

    ---------------------------T-SQL编程--------------------------1.声明变量--declare @name nvarchar(50)--decl ...

  5. STS的安装教程-鹏鹏

    STS全称Spring Tools Suite. 简介:Spring Tools Suite (STS)其实就是一个被包装过的Eclipse,主要用于快速的开发Spring项目,我们不用再去编辑繁琐的 ...

  6. Spring Boot的快速创建

    一.利用向导快速搭建Spring Boot应用 创建一个controller package com.hoje.springboot.Controller; import org.springfram ...

  7. 动态We API层(动态生成js)

    ABP动态webapi前端怎么调用? 研究abp项目时,页面js文件中一直不明白abp.services... 是从哪里来的 在调试SimpleTaskSystem的AngularJs demo时,一 ...

  8. Navicat MySql乱码解决

    接着上一篇博客继续解决 如上图,鼠标放在localhost上右键,选择编辑连接,弹出下图. 如下选择好之后,连接数据库,进行测试.在test数据库上右键选择命令列界面,如下图,输入show varia ...

  9. Web 开发者学习路线图

      2017 Web 开发者学习路线图(头图源自谷歌) 本文是源自 Github 上 Kamran Ahmed 建立的一个仓库.在文中,作者为他的老教授分享了一组成为前端与后端开发者以及 Devops ...

  10. 零基础全面学习HTML

    基础框架 <!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" co ...