五千年(敝帚自珍)

主题:如何用绿坝养肉鸡(一) -- 代码ABC

共:💬168 🌺312 🌵1
分页树展主题 · 全看首页 上页
/ 12
下页 末页
  • 家园 如何用绿坝养肉鸡(一)

    作为周末消遣,我准备认真玩玩这个热点软件。老实说之前的所有回帖我都是道听途说再加自己想象,所以可能比较主观。现在我们来点客观的东西。

    环境准备:

    虚拟机一个,操作系统Windows 2003

    网络抓包软件一个——就用Windows 2003自带的Network Monitor。

    下载,安装,重新启动。

    由于软件版权中不允许我做逆向工程,不过我也不准备这么干。这次是消遣,不想做违法的事情,也不想做太多费脑子的事情。所以我戴上网络管理员的帽子,打开网络抓包工具看看这个LB有没有在网络上夹带私货。由于我用的是虚拟机所以也可以在外边抓包,因此可以监视在系统启动过程中LB有没有发送或接收一些可疑的数据。

    看上去还不错,在系统启动的整个过程LB没发什么数据。然后我打开它的系统设置,进入软件更新,发现这个软件的自动更新并不是默认打开的(很奇怪的默认设置)。更新周期默认则设为10天。所以呢如果谁准备上这条船记得要打开自动更新,否则这个软件有什么补丁就会错过,搞不好就要出状态。(或者他们认为这个软件不会出什么状态,但是有关部门让他们更新关键词表怎么办呢?就算打开了10天也够互联网的人士们干出不少事情了。)

    既然如此,我就主动点立即更新。第一次点击显示服务器繁忙。(生意这么好?)再点一次,好了(看来生意也不是很好嘛)。软件报告下载了200K+的数据,然后打开一个红色的对话框显示文件更新过程,从名字上判断更新的是关键词库。(估计这将会是更新最多的内容了)。

    有更新就行了,本网管一声奸笑切换到抓包程序,LB和服务器的通信就一丝不挂地展现在本网管面前。(就是不够月宫上的东西诱惑啊)。

    前两行数据就看得我直皱眉头,这两行数据显示LB使用DNS查询服务器www.zzjinhui.com的IP地址。有人说这不是废话吗,谁在通信前不要用DNS查一下地址的。对!但是LB使用的DNS是本机设置的DNS,这就是一个不起眼但是很有意思的漏洞。如果我是黑客,我可以先用一个木马或者一个页面脚本程序修改用户的DNS配置,将他们的DNS指向我自己的DNS,然后让用户在查询这个域名的时候将其指向我自己的服务器,这样当LB更新软件的时候就会到我这里来下载,于是我就会高高兴兴地将准备好的大餐送过去。Bingo!一台肉鸡就这样诞生了!这比伪装银行网站还简单,因为连页面也不需要做。一切都是在后台进行的,再仔细的用户也不会发现什么。再联想到LB和360之类的反流氓软件的冲突,就算我送上的大餐有什么问题让360发现了,用户也会认为是LB的事情,老老实实地点击“允许”。我相信LB的客服,如果有的话,肯定会说这是360的误报警。(多好的客服啊)

    本网管去消遣点别的,回头继续


    本帖一共被 3 帖 引用 (帖内工具实现)
    • 家园 您送过去的东西

      人家能否执行彻底?

      • 家园 没明白您的意思

        如果指木马的话,那么和LB无关。如果指的是DNS欺骗之后送过去的更新包,那应该是没什么问题的。不过,我确实没花时间深入去研究这个东西,只是提出一些设想,这里指出的漏洞基本上都是属于可以很快修复的那些,估计现在他们应该都修复了。

        • 家园

          若兰是说,LB对下载的东西应该会做合法性检查吧?

          只是问问,代码兄别见笑。

          • 家园 不敢笑啊

            你呆的那个地方藏龙卧虎,随便拉一个出来就够我一壶的。

            理论上是要有验证的,不过比较可靠的验证是用证书签名。其他的包自带验证是不可靠的,因为验证的代码在客户这边,花点时间分析一下可以破解。然而粗略观察了更新目录下的几个文件以及更新过程的网络通信,没发现有验证的过程和相应的数据。

    • 家园 绿坝娘粉不高兴!

      人家是身价4000万的大小姐,你怎么可以随便动手动脚涅?

      又是肉,又是鸡,那么色色的东西,人家最讨厌了,~~~~你给我停下,~~~~~不要再摸了!

      口口口口口口口口口口口口口口口口口口口口口口口口口口口口口

      (此处删去xxxxx字)

      ......以后.....下次.....我.....再也不和你好了。

    • 家园 缓冲区溢出

      缓冲区溢出,这个漏洞从理论上来说是可以用来攻击

      的。 可是实际做起来相当的难呀, 你怎么才能保证

      正好是改了eip 地址,而且正好就能指向你要的指令呢。 比如说,你把eip改成 0x4444f,在你的机器上

      这里有一条jump指令,可以跳到你要的地方开始。

      可你怎么知道,在我的机器上eip应该改到什么地方呢

      除非你知道 比如说windows系统的核心。 知道

      比如说 对所有系统, 0x4444f 都有一条jump指令

      。所以说我觉得这个说到底还是操作系统的问题。最开始,用这个的人一定对系统熟的不的了。估计核心代码都是他写的。

      • 家园 网上有现成的exploit code

        现在,懂shellcode怎么写的人已经不多了,绿坝的这个漏洞早就已经被人发布了exploit code了。我就不贴链接了,你自己去milw0rm找吧。

        国内的人,当务之急是要让政府明白这个软件是很危险的,如果七月一日一到,所有的新机器都安装这个东西的话,会极大的降低全中国PC的安全性,这个对于整个国家都是很不利的。

        国家必须采取措施,有能力的人去做点挽救的事情吧,指责发牢骚是没有多大作用的。

        • 家园 但是如果原本他们就知道这个问题呢

          要的就是在需要的时候(比如哪个公恶猿又推坐了)把大量的公民的计算机变成ZF的肉鸡呢?

      • 家园

        从楼上在本线的几个帖子看。楼上对如何利用“溢出”攻击的知识和能力还大有欠缺 --- 仅仅知道溢出和堆栈或者ring 3,0是远远不够的,攻击也不是一味使用“暴力”,攻击可以是多种技术的结合,如同现代战争的步炮结合,空地结合。

        1.超长URL“溢出”是一个非常非常非常严重的“溢出”,因为这将浏览器的被攻击面扩大了很多倍。配合垃圾邮件,陷阱网站等等“被动”技术,装载LB机器的被“肉鸡”的可能性被扩大了无数倍。

        2.超长URL“溢出”对ie来讲就是一个非常好的“劫持触发器”。除了JMP,RET这些指令外,还有很多“人为指令”可以达到这些指令的目的。比如说在浏览器上安装完某个木马软件后需要重启浏览器怎么办?祭出超长URL“溢出”这个法宝,更本不需要研究如何修改堆栈内容到某个DLL的什么函数的地址 --- 现在要做的就是等待浏览器崩溃,然后WINDOWS就会问用户:你是否要重启IE浏览器?如果用户答YES --- 这个用户就完全中招了;否则要等N长的时间用户才完全中招。总而言之一句话,一个东西可以这样但不限于这样使用。攻击既可以是主动的,也可以是“被动的” --- 需要研究被攻击目标的“暴露面”。思路要开阔,一根筋是不成的(一根筋也是知识面的关系)。

        3.攻击(劫持)不一定要100%都成功,能攻击(劫持)相当的数量就成。但是攻击是个速决战,不易打成持久战,因为被攻击目标的“暴露面”在不断变化,要是“暴露面”消失了就不好办了 --- 战机稍纵即逝。

        • 家园 我要全明白,还来说这些干嘛

          原理是大家都清楚的。真叫写个东西出来

          是不容易的。 太守水平高,您就亲自写个

          能对这个漏洞进行攻击的程序出来。

          我也能多学习学习。 我确实是写不出来。

        • 家园 掐块Pizza给您,哈皮一下
      • 家园 没那么神

        要看你的“核心代码”是指什么了,首先汇编当然是要熟悉的,有的汇编里没有间接跳转的,就用到改堆栈来实现函数指针的功能,跟这个类似的,当然的确是要花时间去试,但原理并不神秘。

        • 家园 那麻烦老兄讲讲

          以windows来讲,比如说用户A,和用户B,肯定他们

          机器内部的内存分配情况是不一样的。 因为WINDOWS

          使用DLL。好了,现在你人为的制造了一个缓冲区溢出,刚好修改了函数的EIP。 本来应该是函数返回的指令现在变成了你想执行的一条指令。 现在问题来了

          A和B的情况是不一样的,你设计针对A的指令,怎么才能在B上执行呢? 比如说对A 你是一条 JUMP 0X774B

          可B上面 0X774B 根本就没代码。怎么保证这个??

          好把,照你说的,修改堆栈指针,其实着个和JUMP是一样的,都面临一个你怎么保证,找到自己的代码地址的问题。因为A和B的内存分配情况是不一样的。

          好吧,你说,我去查寻,基址寄存器和偏移寄存器表。找到我的代码放在什么地方,然后把指针转过去。 可是, IE进程是运行在3级环上的,只有运行在0级环上的KERNDLL,才能查讯地址寄存器表。否则马上就是一个硬中断。 那怎样才能把这个80386微代码的保护措施饶过去呢??

          LINUX 是因为有一些用户指令,名义上是用户指令,但是其实是运行在ROOT权限下的。术语叫“短暂提升用户级”这样才能运行很多 在0级别环下的特权,才能干点别的。 我都怀疑着个是故意留下的攻击漏洞。

          对WINDOWS来讲, 没这一类的东西,你怎么攻击呀

          你写的汇编代码马上就会引发一个“地址保护错误”的硬中断出来。

          怎样用IE突破保护去操做KERNDLL,这个怕是微软的一个秘密吧。

          要是能拿到那种只给厂商的怎么写底层驱动的指南,估计会有办法。 不然的话,只能理论上说说而已。

          • 家园 咳咳。。。猪哥搞错了好多地方。。

            第一,内存分配是链接时生成的,基本上一样(如果赶上版本不一样,算偶们倒霉,只好另外来一个)

            第二,你说的那些寄存器基本上都不用去看,C函数运行大体上靠ESP,因为shellcode大部分是用溢出位置为基准使用相对址运行,为了减少硬编码,多数只用硬编码的LoadLibraryA(或W)的地址去调用其他api,由于windows用户大多在administrator下运行,不需要提升权限,所以开个用户建个后门,犯不上去访问ring0的东西,在ring3就足够了,倒是做rootkit有时候需要升ring0,不过rootkit很少直接放在溢出的部分,它们往往太大了,还是开了后门之后再送过来比较好。

            至于那段unix和windows的对比是不恰当的,unix的系统调用和ring0,ring3不是一范畴的问题,基本没法解释,其实windows的内核的好多东西也可以直接调,同样和ring0,ring3没关系,只要你引了库就行了,ring0/3的作用位置还在*nix的syscall或windows的routine之下,在内核运行的东西大部分都不涉及指令集的保护。要看例子的话可以去安焦找个看,很多的,偶举例子的话也就素那个样子,还米人家写滴干净

            实际上利用溢出时第一个麻烦不是那些东西,反倒是找到溢出位置的地址,要么用调试器,比如设个内存监视然后用一串奇奇怪怪的东西去填充缓冲区,断住之后按调用栈往回找位置,要么死看逆向后的汇编,呃,这个需要好运气。。反正得自己想办法

分页树展主题 · 全看首页 上页
/ 12
下页 末页


有趣有益,互惠互利;开阔视野,博采众长。
虚拟的网络,真实的人。天南地北客,相逢皆朋友

Copyright © cchere 西西河