X64系统安全分析:寻找浏览器主页劫持的幕后黑手
事件说明:某天上班,突然发现浏览器主页被修改了,改为了某123导航页面,常见的方式都没有发现劫持的链接。
系统环境说明:这里要说明下,此次事件里的主角使用的是win10 x64 专业版,用途主是用来看恒大的VIP2视频教程。除了QQ输入法、winrar、Chrome、火绒安全软件、iTunes、TIM、还有某R搭梯子软件外,没有安装任何软件。我想不明白为什么浏览器会被修改。上面我也说了,系统主要是用来看视频教程的,找到“幕后黑手”后我也就不想在用之前的系统分析了,免得出意外。我写这篇教程所用到的系统是VMware WIN7 X64系统。文章中所使用到的截图均出自于此系统,后面就不在重复说明了:
具体搜索过程,以及相关页面我就不在这里说了,其实是我看了太多忘记链接了,我想大家应该都能搜索的到……
打开浏览器第一反应是浏览器主页肯定被什么程序修改了。常规的检查了浏览器快捷方式、注册表、IE/Chrome设置,但是没有发现有用东西。难道网页劫持又出新技术了?没办法网上搜索一下,还真发现了有用的。在Chrome浏览器地址栏中输入“chrome://version/”打开,看到了有用的东西。
正常的界面截图如下:
被劫持后:
不只是chrome,IE也被劫持了:
按照网上搜索的我怀疑DLL注入攻击。要知道DLL一旦注入成功,可是可以做许多事情的。我要找出幕后黑手,不然岂不是我用电脑干的一切都被黑暗中的眼睛看得一清二楚?万一我看教程的时候被远程录下来了?想想都怕……然后就有了下文。按照文中说明的。我先尝试将浏览器原文件名修改,在打开,果然正常了:
然后我又按照网上搜索到的方法测试,打开任务管理器,使用任务管理器运行程序:
结果运行的程序正常:
基本可以确定系统被DLL注入了。攻击原理是使用DLL文件,注入到系统explorer.exe中,监视常用浏览器的文件名,劫持系统CreateProcess函数,只要检测到浏览器的名字,就在启动中过程中劫持浏览器的主页地址。这也是为什么鼠标双击或者右键打开,都会被劫持,但是使用任务管理器、修改浏览器文件名后回复正常的原因。找到问题就好办了,找到可以看到程序加载那些DLL的工具查看,如Process Explorer,然后找到对应的dll文件反注册后,安全模式删除就行了。
当然上面的这个方法只适合大牛,或者对系统文件了如指掌的系统工程师,如果你不了解千万别乱删,后果很严重的哦。很遗憾我属于后者,我没办法判断哪些文件是有用的,哪些是没有用或者是木马的。我本来是想利用工具监视程序创建过程会利用到哪些DLL文件,然后一个一个排除。问了一圈,好像没有人知道有类似的软件,问了恒大,恒大也说这只有调试器可以办到,这应该属于动态调试范围。
好吧打开OD,来试试,结果:
然后我才想起,我是64位系统,系统应用应该是纯64位系统。不兼容32位,我不知道有什么工具可以调试64位程序。
然后只好: “恒在吗恒”………………
然后得到X64dbg:
到了这里,准备工作算是完成了。这里简单说下,要调试explorer.exe程序,一定要用任务管理器把系统中的explorer.exe先结束掉,也不能用附加的方式调试,否则是拦截不到CreateProcess这个函数的。在打开文件后,先不要点击运行,在系统关键函数CreateProcesW处下断。
如图:
这里有个题外话,应为之前没有用过这个调试器,想右键点击查找----当前模块中的名称(标签)结果发现并不存在。后来发现用快捷键Ctrl+G可以快速定位地址和函数。然后就有了上图。我不知道这样的方式是不是对的,反正目的达到了,也就没有纠结了。有会用这个调试器的大神可以说说……。至于上图中为什么断点下在了CreateProcessW位置,而不是CreateProcess,这是因为64位系统使用的是宽字符集,创建程序用到的也就是CreateProcessW,CreateProcessA只能用在窄字符集,两个函数的功能是完全一样的。
地址正确或函数有效如下图:
点击确定后CPU窗口会显示跳转到这个函数的窗口,然后F2下断,
如图:
确定断点设置好后,即可点击桌面或快捷菜单里的浏览器的快捷方式,正常情况,调试器CPU窗口会断在刚刚下断的地方:
这里简单说下64位寄存器,因为太多的我也不知道。32位系统有8个寄存器,这个大家都知道了,分别是:EAX、ECX、EDX、EBX、ESP、EBP、ESI、EDI。64位系统则有16个寄存器,分别是:RAX、RCX、RDX、RBX、RSP、RBP、RSI、RDI、R8、R9、R10、R11、R12、R13、R14、R15。R开头的8个寄存器是用于计(兼容?)32位程序的,同时在64位系统中,RBP是作为通用寄存器使用的,32位系统中则是堆栈指针。剩下的R8---R15则是64位计算,同时是用d、w、b、指定其长度的,
如下图:
以上图片引用源为:http://blog.csdn.net/qq_29343201/article/details/51278798,文章也介绍了64位系统新增的汇编指令,有兴趣的同学可以去看下。
接上文,CPU断下后直接F7,运行到此处,发现调用了一个第三方的动态库:dtrampo.dll
运行到这里基本可以确定是dtrampo.dll在捣鬼了,劫持的程序包括360、谷歌、百度、遨游、2345、QQ、火狐、搜狗、UC。其他几个不认识。
继续下去,基本确定了是这个程序在搞鬼了:
到此分析也就基本结束了,剩下的就是反注册这个动态库,我在网上搜索了下这个文件,竟然发现这个动态库是火绒安全的一个框架。我不相信安全软件竟然搞这个事情。就和恒大咨询了下。了解到“没有文件自效验功能的程序文件,是有可能被第三方修改的”。然后我就怀疑是不是这个动态库被第三方文件修改了,然后自己又折腾了大半天(具体过程就忽略了吧),结果没有发现。没办法就和火绒安全官方反馈这个事情。
结果:
好吧,到这里也就结束了。也就在写这篇文件,准备调试环境的时候试了一下,打开浏览器保护的时候确实是有个提示框的:
提示界面并没有说明要绑定的网址,很有可能有提示,我没有仔细看直接继续了,从而有个这个乌龙事件。
总体说来,收获还是很大的,虽然程序分析的过程中我并不是每条指令都能看懂,但还是实现了自己的目标,最主要的在学习中得到了快乐、满足。我现在把这个不算教程的文章发出来,希望对大家有帮助。多多练习,我们也能成为别人口中的大牛。
感谢分享,分析过程可以让很多人学习到知识!
加油!! 这一波分享值得收藏,谢谢师兄 Shark恒 发表于 2018-2-5 23:14
感谢分享,分析过程可以让很多人学习到知识!
加油!!
其实我最要感谢的是你,是你愿意在你的空闲时间帮我解答课程外的问题,是你不厌其烦的回复我“恒在吗,恒”。是你愿意把你宝贵的经验毫不保留的传授我们。谢谢您,恒老师。{:5_189:} OSVince 发表于 2018-2-6 08:42
其实我最要感谢的是你,是你愿意在你的空闲时间帮我解答课程外的问题,是你不厌其烦的回复我“恒在吗,恒 ...
这一切都起源于你们对我的信任,所以这是我应该做的{:7_268:} 顶顶顶收藏一波了 这个可以学习下 不错 收藏下 收益匪浅,感谢楼主分享 这个可以学习下 不错 收藏下 X64很少见,很多教程都是32位的