sskaje/mitm

sskaje 的 MiTM 代理

dev-master 2017-04-27 04:23 UTC

This package is not auto-updated.

Last update: 2024-09-20 21:22:16 UTC


README

PHP Man-in-The-Middle TCP Proxy based on ReactPHP.

此代理不适用于 SSL 到普通SSL 到 SSL 的高职。

作者:sskaje (http://sskaje.me/)

安装

克隆代码

$ git clone git@github.com:sskaje/mitm.git

$ git clone https://github.com/sskaje/mitm.git

Composer 安装依赖

$ cd mitm
$ php composer.phar install

试用

examples/proxy.php 是一个简单的 PHP-MiTM 实现,将日志发送到 stderr。

examples/verbose.php 做同样的事情,并将流量数据转储到 stderr。

用法

php examples/proxy.php LISTEN_PORT CONNECT_HOST CONNECT_PORT [RESOLVER]

示例

  1. 将 TCP DNS 请求从 127.0.0.1:53 转发到 114.114.114.114:53

这需要 ROOT 权限,你必须知道为什么。

如果不这样做,请尝试将 5353 作为 bin/proxy.php 的第一个参数。

php examples/proxy.php 53 114.114.114.114 53 
# direct tcp dns query to 114.114.114.114
$ dig +tcp @114.114.114.114
# query 127.0.0.1:53
$ dig +tcp @127.0.0.1
# query port to 5353 if you bind proxy to 127.0.0.1:5353 
$ dig +tcp -p 5353 @127.0.0.1

  1. 转发 HTTP 请求
php examples/proxy.php  15920 118.184.180.46 80
curl 127.0.0.1:15920 -H 'Host: ip.cn'
当前 IP:39.166.202.153 来自:江西省九江市 移动

  1. 劫持并修改 HTTP 流量

将来自 sskaje.me 的 http 请求更改为 ip.rst.im

php examples/hijack.php  15920 104.31.70.199 80  
curl 127.0.0.1:15920 -H 'Host: sskaje.me'

你将看到

[1] [HIJACK] sskaje.me FOUND in HTTP Header
[1] [HIJACK] replaced to ip.rst.im

更多

在路由器上劫持流量

如果你有一个 Linux 路由器,或者带有 net.ipv4.ip_forward=1 的 Linux 箱子

iptables -t nat -A PREROUTING -p tcp --dst {CONNECT_HOST} --dport {CONNECT_PORT} -j REDIRECT --to-port {LISTEN_PORT}

## EOF