来源:Python 技术「ID: pythonall」
中间人攻击,顾名思义,就是客户端和服务端的通信被第三者拦截了,这样通信双方的通信内容就会被窃听。你可能会认为,没关系啊,窃听就窃听呗,反正又没什么重要的信息,那如果我告诉你,攻击者不但可以窃听你们的通信内容,甚至可以修改你们的通信内容,你还会这么认为么。
想象一下,当你和你的女朋友正聊的火热时,你们的聊天记录就好像被挂在了公屏上一样,攻击者一览无余,甚至当你给你的女票发送了一句「我爱你」之后,攻击者篡改了你发送的内容,修改为「我恨你」。想象一下后果严重不严重。
与信息被窃听带来的危害相比,攻击者篡改通信内容所带来的危害则更甚。今天派森酱就带你来玩一玩中间人攻击。
熟话说工欲善其事,必先利其器。好的工具可以让我们事半功倍,今天的主角就是 mitmproxy,这是一款出色的代理工具,使用起来也非常简单方便,使用 pip 安装即可。
pip3 install mitmproxy
安装好之后,我们就可以使用 mitmproxy、mitmdump 和 mitmweb 这三个命令来愉快的玩耍了。
其中 mitmproxy 是以命令行的方式来交互的,不太好用,所以很少用,暂时忽略即可;mitmdump 是 mitmproxy 的命令行接口,关键的是,该命令可以使用 Python 对请求做数据处理,比如数据的解析,过滤,存储等;而 mitmweb 则是 web 交互模式。
mitmweb
直接在命令行是输入 mitmweb
按回车即可。
此时,我们可以看到 mitmweb 在 8080 监听,而 8081 则是 web 交互界面的端口,打开地址 http://127.0.0.1:8081/ 即可看到。
设置好电脑的代理服务器地址和端口,代理地址是本地,端口就是 8080,然后用浏览器访问必应首页 https://cn.bing.com/
,mitmweb 监控页面就会收到一系列请求了,针对每个具体的请求,还可以看到详细的请求和返回数据,
mitmdump
相比于 mitmweb,mitmdump 的功能更强大,我们可以使用 Python 脚本来处理相应的请求。
先建一个 script.py
的脚本。
def request(flow):
print('request url is %s' % flow.request.url)
接着执行 mitmdump -s script.py
命令,可看到 mitmproxy 仍然是在 8080 端口开启监听。
然后我们开始访问必应首页,可以看到控制台输出如下。
细心的你可能发现了,第二张图的命令比第一张图多了一个 -q
的参数,这是为了防止 mitmproxy 的日志输出对结果造成干扰。我们的脚本程序已经跑通了,接下来就是如何对数据做处理了。
今天我们来做点好玩的,不管用户访问什么网站,我们都将其指向必应首页。
def request(flow):
flow.request.url = 'http://cn.bing.com'
一行代码搞定,启动 mitmproxy 来看下效果,我们试着访问下百度搜索。
另外,假设你正在 bing 搜索「如何自学 Python」,我们将返回的答案修改为“自学 Python,请关注「Python 技术」公众号“。
def response(flow):
text = flow.response.get_text()
for str in ['自学 Python', '自学Python', '自学 python', '自学python']:
text = text.replace(str, '自学 Python,请关注「Python 技术」公众号')
flow.response.set_text(text)
启动 mitmproxy,然后用 bing 搜索相应的关键字,我们可以看到 bing 返回的结果已经被修改为我们程序中内定的文案了。
是不是很流弊呀,这就是 mitmproxy 的强大之处,我们可以用 Python 脚本对请求做任何处理,只有你想不到,没有做不到。
今天我们用 mitmproxy 实现了中间人攻击,只是作为实验达到学习知识的目的。现实中的中间人人攻击远比这个要复杂的多,会涉及到 DNS 欺骗,网络劫持等多种手段,大家平时上网还需多留心。
PS:公号内回复「Python」即可进入Python 新手学习交流群,一起 100 天计划!
老规矩,兄弟们还记得么,右下角的 “在看” 点一下,如果感觉文章内容不错的话,记得分享朋友圈让更多的人知道!
【代码获取方式】
识别文末二维码,回复:210213
from os.path import dirname, abspath
import sys
path = dirname(dirname(dirname(abspath(__file__))))
sys.path.append(path)
import json
import hashlib
from mitmproxy import http, ctx
from group_control.simulation.mitm_conf import host_channel_mapping, chann.
代理是一种中间人(赚差价的中间商)的角色 🧔,它帮助用户发送网络请求 💻,同时隐藏用户的真实身份 🕵️♂️。通俗的解释,就是你想去买某件见不得人的物品,自己不好意,然后请一个代理帮你完成这件事情。代理人替你发送请求,并将物品送到你制定的地址,卖家只知道有代理人,不知道你是谁。代理在网络中也是这样的工作方式,它代表用户发送请求,隐藏用户的真实身份。
使用MITMF + MSF +BEEF + CVE-2018-8570实现内网渗透
安装MITMF:目前2019.1a以上的版本kali已经没有携带mitmf,需自行安装,但目前的安装方法已经失效,而我众和多种方案,查阅相关资料,成功安装,以下是我的安装方法。
a)先安装解决所需要的包依赖
apt install python-dev python-setuptools libpcap0.8-de...
DNS即域名系统(英文:Domain Name System,缩写:DNS)是互联网的一项服务。它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。DNS使用TCP和UDP端口53。当前,对于每一级域名长度的限制是63个字符,域名总长度则不能超过253个字符
DNS协议
DNS协议即域名解析协议,是用来将域名转换为IP地址。
DNS协议报文格式
会话标识:是DNS报文的ID标识,对于请求报文和其对应的应答报文,这个字段是相同的,通过它可以区分DNS应
如果想要彻底了解一个网络,那么最好的办法就是对网络中的流量进行嗅探。此篇记录几个嗅探工具,这些嗅探工具可以用来窃取网络中明文传输的密码,监视网络中的数据流向,甚至可以收集远程登录所使用的NTLM数据包(这个数据包中包含登录用的用户名和使用Hash加密的密码)。详见《python渗透测试编程》。
中间人攻击(通常缩写为MitM或MiM)是一种会话劫持网络攻击。黑客拦截数字共享的信息,通常是作为窃听者或冒充他人。这种类型的攻击非常危险,因为它可能会导致一些风险,如信息被盗或虚假通信,通常很难检测到这些危险,因为情况对合法用户来说似乎完全正常。
本文将涵盖您需要了解的关于中间人攻击的点,包括:
什么是中间人攻击?
中间人攻击是怎样的?
中间人攻击有哪些不同的攻击类型?
中间人攻击的潜在风险是什么?
中间人攻击是如何演变的?
现实生活遭受中间人攻击的例子
如何防范中间人攻击?
什么是中间
邻居子系统与ARP协议
邻居子系统的作用就是将IP地址,转换为MAC地址,类似操作系统中的MMU(内存管理单元),将虚拟地址,转换为物理地址。
其中邻居子系统相当于地址解析协议(IPv4的ARP协议,IPv6的ND(Neighbor discover)协议)的一个通用抽象,可以在其上实现ARP等各种地址解析协议
邻居子系统的数据结构
struct neighbour{
.................
Subterfuge是一款用python写的中间人攻击框架,它集成了一个前端和收集了一些著名的可用于中间人攻击的安全工具。
Subterfuge主要调用的是sslstrip,sslstrip 是08 年黑帽大会提出的工具,它能突破对SSL的嗅探会进行自动的中间人攻击来拦截通讯的HTTP 流量,然后将流量中所有出现的HTTP 链接全部替换为HTTP,并把这个过程记录下来。接下来使用替换好的 H...
文章来源|MS08067 WEB安全班课后作业本文作者:某学员A(Web安全培训班1期学员)按老师要求尝试完成布置的作业如下:1.使用wireshark抓包,根据实际数据包,分析ARP报文...
随着互联网的高速发展,信息安全问题已经成为企业最为关注的焦点之一,而前端又是引发企业安全问题的高危据点。在移动互联网时代,前端人员除了传统的 XSS、CSRF 等安全问题之外,又时常遭遇网络劫持、非法调用 Hybrid API 等新型安全问题。当然,浏览器自身也在不断在进化和发展,不断引入 CSP、Same-Site Cookies 等新技术来增强安全性,但是仍存在很多潜在的威胁,这需要前端技术人员不断进行“查漏补缺”,那么这篇文章就带领大家梳理Web安全的知识点,此篇是攻击篇,下篇将会带来防御篇~⚽。