随身Wifi+win7 搭建http代理 域名劫持 抓包 内容篡改实验环境

需求来源:

       1.平板或手机是个封闭系统无法给wifi设置代理

       2.需要利用filllder进行抓包,内容篡改等实验

拥有硬件资源:PC机器 + 小米随身wifi

方案1: NtBind Dns + Nginx

基本原理:域名劫持 +  反向代理 + 正向代理

部署图:

说明:

1.因为小米wifi与本地网卡是底层共享,设置PC机本地host和在MiWifi上设置DNS都没有任何效果,所以只能在本地网卡上做文章

2.本地网卡上设置IPv4的首选DNS是127.0.0.1 指向本地DNS服务器

3.NtBind DNS是在Win7操作系统上搭建的本地DNS服务,具体配置参考链接:

   在Windows7 系统上部署DNS服务器 http://blog.csdn.net/hyman_c/article/details/53560891

   按照博文中的链接,在安装NiBind时并不需要另外安装dll文件,整个过程都很顺畅

   按照博文中为链接,当某些郁闷本地DNS中没有配置时,就从配置的DNS服务器中同步拉取,这部分拓扑图略

4.NtBind DNS中可以将所有需要劫持的域名都指向本地:127.0.0.1

5.Nginx上对劫持域名进行反向代理,代理到本地fillder端口(如果某些接口需要访问本地开发环境的服务,可以直接指向本地开发服务提供的接口)

6.fillder上可以对反代过来的请求进行重新host,访问外网真实服务器,这个host文件仅对fillder有效,会覆盖NtBind DNS的域名解析

 

附录Nginx配置,这是对sohu网站的配置:

server {
         listen  80;
         charset utf-8;
         server_name  m.tv.sohu.com;
         location / {
            proxy_store off;
            proxy_redirect  off;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP  $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto  $scheme;
            proxy_pass   $scheme://127.0.0.1:8888;
            proxy_connect_timeout   90;
            proxy_read_timeout     90;
            proxy_send_timeout    90;
            proxy_next_upstream http_500 http_502 http_503 http_504 error timeout invalid_header;
        }         
    }

注意事项:

1.因为是本地网卡DNS配置,不仅会影响Pad的访问,同时也会影响本机浏览器的访问,在实验结束,为了不影响工作,需要将本地DNS改回原有的

2.此方案仅针对http代理访问有效,https因为客户端对证书的严格检查等因素,次方案基本不会奏效

-------------------------------------------------------------------------方案1 改良版-------------------------------------------------------------------------------------------

采用方案1,一直纠结的点在于     怎么在不安装多余app的情况下(因为平板是封闭系统), 篡改平板上域名解析后的地址,让这个请求被fillder代理

                  经过测验,可以为平板上WIFI访问设置静态IP,手动配置DNS即可。这样的话,如果当前环境拥有其他无线路由器(公共WIFI)也能访问

                  到本机DNS,那么即使不用小米随身wifi也能满足我的需求(当前公司环境就是如此)

配置静态IP

       静态地址:就使用未修改前DHCP分配的那个IP(这样能有效避免IP冲突)

       路由器地址:如果不知道,可以用自己手机安装Ping & DNS 工具,然后连接公共WIFI,查看Network Info,Gateway 项就是路由器地址

     前缀长度:默认24位

     域名:这里就配置我们自己搭建的DNS地址

注意事项:

1.该方案因为没有改变PC机本地网卡的DNS,因此不影响正常办公,同时也不需要在fillder中再进行单独host

2.因为公共wifi过来的IP不一定是192网段,所以建议在配置Bind DNS时在named.conf中为allow-query配置为any 即不做IP限制

改良后的部署图:

 

 

方案2 : 在方案1的基础上去掉nginx反向代理,将fillder的代理端口改为80端口即可

基本原理:域名劫持 +  正向代理

说明:

1.因为本机需要开启nginx进行开发调测占用80端口,所以舍弃了该方案

 

方案3 : NtBind Dns + Htran

基本原理:域名劫持 +  正向代理 + 正向代理

部署图:与方案1类似,只是将其中的Nginx用Htran取代

说明:

1.该方案可以满足80端口被占用的情况下,也能用fillder进行抓包

2.域名劫持 +  端口转发(正向代理)可以解决不仅限于http的数据,同时可以对socket进行代理,适宜于解决移动终端不能设置代理服务器的情况下的上网问题

3.此方案可以把80 443的接口都转发到fillder代理上,可以对非严格校验的https请求进行抓包解密,信息篡改

4.此方案对采用了httpDNS的移动应用会存在失效的情况

5.因为目前方案1满足了我的原始需求可以支持我进行问题定位,因此此方案未进行验证,不排除还有其他不可行的因素在其中

 

posted @ 2017-10-15 14:55  逐日  阅读(3175)  评论(0编辑  收藏  举报