.在其电脑上操作查看。
2.除非连成局域网才能看到对方的聊天记录。甚至可以使用他的QQ与他的好友聊天。
3.别无它法。
顺祝新年快乐!
今天来说一下QQ木马的原理和第三方QQ登陆器防盗的原理!
其实,要想防止QQ被盗,只要了解QQ盗号程序的实现原理,就能找出防范的方法来。
一、分析QQ盗号软件的原理及程序实现的重点
常见的QQ木马盗号技术实现主要使用如下方法:
1.对指定进程[QQ.exe],发送消息,获取进程的控件内容,如密码输入框内容。
2.对指定进程[QQ.exe],利用全局HOOK(钩子),进行键盘记录,获取输入的内容。
目前常见的QQ盗号木马大部分都是使用上面的手法进行盗号的,大家可以看出,这两种手法都需要对QQ进程进行监控,其重点就是:
监控QQ登陆时输入帐号密码的界面,获取该界面内控件(号码输入框和密码输入框)的内容;
还有就是对这些控件的键盘输入内容进行监控记录。
二、寻求解决方案及实现方法
如果我们能够不经过登陆界面的QQ号码和密码的输入(或者不使用QQ程序的标准登陆界面)来登陆QQ的话,那么针对QQ进程和QQ登陆界面进行监控记录的木马,就会失去效果了.
1.这里第一个大家可能会想到在一部干净的电脑上登陆一次QQ然后设为自动登陆,这样以后使用这个自动登陆就不会被木马盗取密码了,但是这种办法使用比较不方便,一个QQ只能登陆一个,所以有人发现了下面这种办法!也就是PWDHash!
2.PWDHash的由来
QQ的PWDhash
原本是为实现
与
TM、QQGAME无缝切换而用的将密码加密传递的参数。使得用户能在
与
TM、QQGAME之间快速切换而不用再次输入密码。
使用方法(下面的/STAT:41代表正常登陆,41是隐身登陆):
QQ程序路径
/START
QQUIN:QQ帐号
PWDHASH:加密后的QQ密码
/STAT:41
例如:
"C:\Program
Files\TENCENT\QQ.exe"
/START
QQUIN:132456
PWDHASH:4QrcOUm6Wau+VuBX8g+IPg==
/STAT:41
概念:
PWDHASH就是对我们的原始QQ密码进行加密处理,MD5(32bit)→HEX2ASCII(ansi)→Base64!
先用MD5散列算法处理,然后再用BASE64编码对这个HASH字节组做第二次编码得到的。因为MD5是不可逆的,所以只能把密码还原到MD5,理论上说是无法从PWDHASH反推出原始的QQ密码的。但是,如果密码过于简单,如十位以下的纯数字、生日,纯大写,纯小写之类的,是可以被简单暴力破解的。
利用PWDHASH登录的利与弊
有利的一面:免去输入密码之苦,双击一下就可以登录,同时也可以防止密码被键盘记录软件盗取。
不好的一面:如果是多人共用电脑,或者电脑可以被别人随意使用,只要别人获取了你的PWDHASH那么别人是可以随意登陆你的QQ的。
三、总结
在计算机世界里没有绝对的安全,使用QQ密码参数传递来登陆QQ虽然可以避免输入QQ帐号密码时被记录,但是登陆后在QQ.EXE进程后面会留有登陆时的参数,只要用『瑞星卡卡助手』的进程查看就可以看到了,所以木马只需要改写一下,检查QQ.EXE是否带参数,如果带有参数的话就记录下来,然后发送出去,这样就还是可以盗你的QQ,它可以利用你的PWDHASH来登陆你的QQ,但不知道你的密码,但是可以登陆QQ已经够了.
不过因为这种办法无法获取密码,和这种办法使用并不广泛,所以目前市面上的QQ木马都没有针对这个办法进行改进,所以目前来说还是相对比较安全的!
QQ2005 贺岁版登录口令加密算法及其源代码 Binny(Binny@vip.163.com) 2005-12-11 3:27:33 查看: 次 星级: 文字大小: 较大 正常 较小 收藏此页到365Key 收藏此页到新浪ViVi 【导读】拿到QQ 2005贺岁版后,发现其加密原理并没有新的改变,经过跟踪和分析,编制出暴力破解本地QQ密码的程序。QQ密码在正确登陆后,会将加密的结果保存在用户目录的ewh.db文件中,加密采用公开的MD5算法,通过N次循环以及异或后求反,最终计算出加密的结果,与用户的ewh.db文件中的密文比较后,发出“输入密码与上次成功登录的密码不一致,$0A是否到服务器验证?”(这条信息在BasicCtrlDll.dll的资源中,$0A在C的格式化中为回车)。根据这个提示,完成本地QQ密码的暴力破解。 拿到QQ 2005贺岁版后,发现其加密原理并没有新的改变,经过跟踪和分析,编制出暴力破解本地QQ密码的程序。
QQ密码在正确登陆后,会将加密的结果保存在用户目录的ewh.db文件中,加密采用公开的MD5算法,通过N次循环以及异或后求反,最终计算出加密的结果,与用户的ewh.db文件中的密文比较后,发出“输入密码与上次成功登录的密码不一致,$0A是否到服务器验证?”(这条信息在BasicCtrlDll.dll的资源中,$0A在C的格式化中为回车)。根据这个提示,完成本地QQ密码的暴力破解。
在QQ系统中,“QD”标志代表QQ Data,例如,我们可以在文件User.db或ewh.db中找到这个以QD开头的数据结构。
一、 ewh.db原始数据
51 44 01 01 03 00 04 03 00 BD AF A8 04 00 00 00
00 2E 06 00 07 03 00 B9 AB B4 10 00 00 00 07 22
AA 96 56 19 A3 9E 82 19 B7 2B BD 2D 34 4A 04 03
00 A9 B5 B2 04 00 00 00 3C A8 93 06
其中,红色为AST循环次数,兰色为EWH加密字符串,绿色为UIN QQ号(110340156=0x0693A83C,Intel体系内存中排列顺序为:3CA89306)。
二、 ewh.db数据结构
HEX
偏移 DEC
偏移 数据 注释 变量
标志
0000 1 51 44 QD,QQ Data 数据标志 Flag
0002 3 01 01 保留的数据结构 Reserve
0004 5 03 00 总数据段(Data Sections)的个数 Sections
0006 7 04 第一个数据段(简称1S,下同)的类型,可以从0x01到0x0F,04代表本数据没经过加密处理。 Type1S
0007 8 03 00 1S标志的长度。 LenFlag1S
0009 10 BD AF A8 1S标志(例如AST、UIN、EWH等),是经过简单的异或并求反计算处理的,此处是AST,可能是Algorithm Shift Times 或Axxx Switch Time,管他的呢! Flag1S
000C 13 04 00 00 00 1S数据的长度 LenData1S
0010 17 00 2E 06 00
= (404992) 1S数据,这里是进行MD5转换的次数。
这个数据是同计算机的性能有关的,性能越高的计算机,在QQ注册成功后产生的这个循环控制变量就越大。 Data1S
0014 21 07 2S数据的类型,07代表使用MD5进行加密 Type2S
0015 22 03 00 2S标志的长度 LenFlag2S
0017 24 B9 AB B4 2S标志,此处是EWH,代表本数据段是EWH密码数据,可能是Encrypt With Hash的缩写 Flag2S
001A 27 10 00 00 00 2S数据的长度 LenData2S
001E 31 07 22 AA 96
56 19 A3 9E
82 19 B7 2B
BD 2D 34 4A 2S数据,是经过MD5加密计算后产生的数据,当然还要经过异或并求反的计算处理,参考下面程序中的1000B858 行代码。 Data2S
002E 47 04 3S数据的类型 Type3S
002F 48 03 00 3S标志的长度 LenFlag3S
0031 50 A9 B5 B2 3S标志,此处是UIN,代表本数据段是QQ号码,可能是:User Identifier Number的缩写 Flag3S
0034 53 04 00 00 00 3S数据的长度 LenData3S
0038 57 3C A8 93 06 3S数据,3C A8 93 06 = 110340156 Data3S
三、 加密原理
下面VB伪代码的部分符号引自以上第二点《结构说明》中的变量标志,请注意理解:
Pwd = MD5(Pwd, Len(Pwd)) ' Pwd为用户输入的密码,第一轮MD5后,Pwd成为16位字节长度的MD5串。
XorKey As Long = 0 'XorKey为用于解密的字节
For k = 1 To Data1S – 1 '因为前面已经做过一轮,所以此处要减一
Pwd = MD5(Pwd, 16)
Next k
XorKey = XorKey And HFFFF
XorKey = (LenData2S And HFF) Xor (LenData2S \ 256)
XorKey = HFF - XorKey '求反
For k = 1 To 16
Pwd(k) = Pwd(k) Xor XorKey
Next k
If Pwd Data2S Then
MsgBox "输入密码与上次成功登录的密码不一致," vbcrlf "是否到服务器验证?"
End If
通过以上的流程,我真的佩服QQ的设计者,如此巨大的循环量,加上循环次数的随机性,如果希望产生一个QQ MD5词典简直不可能。虽然理论上,可以产生一个MD5字典,但是,这个字典将有1.15E+77*16个字节之巨,因此,只好根据ewh.db文件提供的数据暴力破解了,不知是不是有更好的方法呢?
不过我的感觉是,循环次数加多了,应该会产生更多的MD5碰撞,不见得是个好事。
还有一种破解思路,也许更加直接,将在后面的文章中详细探讨。但是我只有在有时间做完实验后才有资格评述,不在本文章的讨论范围内。
四、 破解算法
重复进行数十万次MD5加密,会消耗计算机很多时间,如果使用传统的VB或VC,对于一个密码的等待时间也是很可观的(例如使用VB代码,消耗的时间可能是汇编的400倍),因此,我使用汇编语言来编制低层加密解密算法,通过MASM32编译连接,最后用高级语言调用。通过提供算法动态库的方式,方便其他有兴趣的读者自己增加丰富的功能。例如增加多线程等,这也将在以后的探讨中实现。在此不做深入讨论。
附带的例子为VB和VC调用汇编语言动态库的例子,VB代码简单实现了通过密码字典进行单线程破解的功能,读者可以丰富其内容。增加更多的功能。
五、 QQ数据结构分析
下面为动态库BasicCtrlDll.dll中反汇编的代码以及代码分析,主要用于分析EWH.DB中数据结构以及QQ数据解调算法的问题。另外,这个算法也可以将User.db中的数据提取出来。深入研究下去,做一个聊天记录查看器之类的软件也非难事。
1000B71D B8 AC160110 mov eax,BasicCtr.100116AC
1000B722 E8 89460000 call BasicCtr.1000FDB0
1000B727 83EC 3C sub esp,3C
1000B72A 8B45 08 mov eax,dword ptr ss:[ebp+8] 将数据的开始地址赋给EAX,实际数据为**Data,EAX=*Data
1000B72D 53 push ebx
1000B72E 56 push esi
1000B72F 57 push edi
1000B730 8B30 mov esi,dword ptr ds:[eax] 需要转换的字符串,EAX指示一个结构,第一个成员为实际的数据指针
1000B732 894D D8 mov dword ptr ss:[ebp-28],ecx 局部变量[ebp-28]保存全局的标志结构,ECX为全局参数地址,在调用本函数时跟入
1000B735 8B46 F8 mov eax,dword ptr ds:[esi-8] 为CString结构中长度的成员,表示总共多少个字节
1000B738 83F8 06 cmp eax,6 如果长度小于6,则为无效的数据
1000B73B 0F82 81020000 jb BasicCtr.1000B9C2 如果比6小则跳转退出,说明数据量不够解调的
1000B741 803E 51 cmp byte ptr ds:[esi],51 是否为 QQ Data 的数据,QD为QQ数据标志
1000B744 0F85 78020000 jnz BasicCtr.1000B9C2
1000B74A 807E 01 44 cmp byte ptr ds:[esi+1],44
1000B74E 0F85 6E020000 jnz BasicCtr.1000B9C2
1000B754 66:8B7E 04 mov di,word ptr ds:[esi+4] 对于EWH来说,为第4+1个字节,为0003
1000B758 83C6 04 add esi,4 指向数据段(Sections)的个数
1000B75B 46 inc esi
1000B75C 83C0 FA add eax,-6 EAX去掉6个字节,对于EWH来说,剩下36H个字节
1000B75F 46 inc esi
1000B760 8945 08 mov dword ptr ss:[ebp+8],eax 指向第一个数据段
1000B763 E8 CE050000 call BasicCtr.1000BD36 在内存(ECX+9C)处开辟一个(100H)字节的空间,空间地址返回到EAX
1000B768 8365 E0 00 and dword ptr ss:[ebp-20],0 局部变量[ebp-20]清零
1000B76C 0FB7C7 movzx eax,di 转换到EAX,对于EWH,di=3。表示有3段数据
1000B76F 85C0 test eax,eax
1000B771 8945 B8 mov dword ptr ss:[ebp-48],eax 局部变量[ebp-48]保存数据的段数
1000B774 0F8E 21020000 jle BasicCtr.1000B99B
1000B77A 837D 08 07 cmp dword ptr ss:[ebp+8],7 如果整个长度小于7,则剩下的应该是QQ号了。第一次进入时=36H
1000B77E 0F82 3E020000 jb BasicCtr.1000B9C2 如果剩余的数据长度小于7则退出
1000B784 8A06 mov al,byte ptr ds:[esi] 第一次进入时,ESI指向第7个数据即数据段的类型,例如 04
1000B786 66:8B4E 01 mov cx,word ptr ds:[esi+1] CX=后一个数据,及数据段标志的长度,例如 0003
1000B78A 46 inc esi
1000B78B 8B55 08 mov edx,dword ptr ss:[ebp+8] 剩余的数据长度,如36H
1000B78E 836D 08 03 sub dword ptr ss:[ebp+8],3 去掉3个,例如成为33H=51
1000B792 894D C8 mov dword ptr ss:[ebp-38],ecx 局部变量[ebp-38]保存数据段中标志长度
1000B795 0FB7F9 movzx edi,cx EDI为标志长度了
1000B798 46 inc esi
1000B799 8845 E4 mov byte ptr ss:[ebp-1C],al 局部变量[ebp-1C]保存本段的类型
1000B79C 8D4F 04 lea ecx,dword ptr ds:[edi+4] ECX为取得的标志长度再加上4,例如=7
1000B79F 46 inc esi 第一次时,ESI指向第一个数据段的标志字段了,例如指向BDAFA8,第9个数据开始
1000B7A0 394D 08 cmp dword ptr ss:[ebp+8],ecx 如果剩余的数据比“标志长度+4”还少,则没有数据,因此不进行处理
1000B7A3 0F82 19020000 jb BasicCtr.1000B9C2
1000B7A9 8B0C37 mov ecx,dword ptr ds:[edi+esi] 跳过数据段的标志部分,将数据段的长度赋值给ECX。例如[edi+esi]=4
1000B7AC 8D1C37 lea ebx,dword ptr ds:[edi+esi] EBX保存新的指针,指向数据段中数据部分的长度部分,例如,[EBX]=4
1000B7AF 895D C4 mov dword ptr ss:[ebp-3C],ebx 局部变量[ebp-3C]保存数据段中数据部分的长度指针
1000B7B2 8D4C0F 07 lea ecx,dword ptr ds:[edi+ecx+7] 从标志(自身长3,加上4个长度位=7)开始,加上数据长度,为完整数据长度。例如E
1000B7B6 3BCA cmp ecx,edx 如果剩下的数据长度(如36H)不够,则退出
1000B7B8 894D CC mov dword ptr ss:[ebp-34],ecx 局部变量[ebp-34]保存本数据段的总长度
1000B7BB 0F87 01020000 ja BasicCtr.1000B9C2 如果小于则退出程序
1000B7C1 8365 F0 00 and dword ptr ss:[ebp-10],0 局部变量[ebp-10]清零
1000B7C5 3C 01 cmp al,1 al保存本段的类型,有效的类型是4或7
1000B7C7 74 18 je short BasicCtr.1000B7E1
1000B7C9 3C 02 cmp al,2
1000B7CB 74 14 je short BasicCtr.1000B7E1
1000B7CD 3C 03 cmp al,3
1000B7CF 74 10 je short BasicCtr.1000B7E1
1000B7D1 3C 04 cmp al,4
1000B7D3 74 0C je short BasicCtr.1000B7E1
1000B7D5 3C 05 cmp al,5
1000B7D7 74 08 je short BasicCtr.1000B7E1
1000B7D9 3C 07 cmp al,7
1000B7DB 74 04 je short BasicCtr.1000B7E1
1000B7DD 3C 06 cmp al,6
1000B7DF 75 19 jnz short BasicCtr.1000B7FA
1000B7E1 51 push ecx 为本段的总长度,包括(段类型+标志长度+标志+数据长度+数据),例如,对于密码段=1AH
1000B7E2 E8 23430000 call MFC42.operator new
1000B7E7 FF75 CC push dword ptr ss:[ebp-34] n=[ebp-34],局部变量[ebp-34]保存本数据段的总长度
1000B7EA 8D4E FD lea ecx,dword ptr ds:[esi-3] [esi-3]指向本段的开始(从段类型算起)
1000B7ED 8945 F0 mov dword ptr ss:[ebp-10],eax 局部变量[ebp-10]保存拷贝后的数据
1000B7F0 51 push ecx src
1000B7F1 50 push eax dest
1000B7F2 E8 E5450000 call MSVCRT.memcpy memcpy,将本段的整段数据拷贝到新的地方,数据指针保存在局部变量[ebp-10]中
1000B7F7 83C4 10 add esp,10
1000B7FA 8B45 C8 mov eax,dword ptr ss:[ebp-38] 局部变量[ebp-38]保存数据段中标志长度
1000B7FD 33C9 xor ecx,ecx
1000B7FF 32C4 xor al,ah 将低位长度与高位异或,例如3 xor 0=3
1000B801 85FF test edi,edi EDI为标志位的长度
1000B803 76 12 jbe short BasicCtr.1000B817 如果本段没有段标志,则跳转
1000B805 8A1431 mov dl,byte ptr ds:[ecx+esi] 开始循环,循环次数为标志的长度。 ECX第一次时为0,将第一个数据加载到DL中。
1000B808 32D0 xor dl,al AL为长度的高位和低位的异或,这里为3
1000B80A F6D2 not dl DL=NOT ([数据] xor [数据段标志长度的高位 xor 数据段标志长度的低位])
1000B80C 881431 mov byte ptr ds:[ecx+esi],dl 数据保存在原始的内存中相应的地方
1000B80F 41 inc ecx
1000B810 3BCF cmp ecx,edi
1000B812 72 F1 jb short BasicCtr.1000B805
1000B814 8B5D C4 mov ebx,dword ptr ss:[ebp-3C] 局部变量[ebp-3C]保存数据段中数据部分的长度指针
1000B817 57 push edi EDI为标志位的长度
1000B818 56 push esi ESI为指向解密以后的数据,例如AST
1000B819 8D4D E8 lea ecx,dword ptr ss:[ebp-18] 局部变量[ebp-18]存放强制类型转换以后的数据指针的指针,例如AST
1000B81C E8 5B430000 call MFC42.CString::CString 将解密后的数据变成CString类型。返回的类型放在EAX指示的地址中
1000B821 8365 FC 00 and dword ptr ss:[ebp-4],0 局部变量[ebp-4]清零
1000B825 6A FC push -4
1000B827 58 pop eax EAX=-4=FFFFFFFC
1000B828 8BF3 mov esi,ebx ebx保存数据段中数据部分的长度指针
1000B82A 2BC7 sub eax,edi EAX=EAX-EDI=FFFFFFFC-3=FFFFFFF9
1000B82C 8B1E mov ebx,dword ptr ds:[esi] ebx为数据段中数据部分的长度了
1000B82E 0145 08 add dword ptr ss:[ebp+8],eax 第一次时,[EBP+8]=33。执行后=2C,相当于33H-7H=2CH
1000B831 83C6 04 add esi,4 ESI指向数据段中的数据部分了
1000B834 395D 08 cmp dword ptr ss:[ebp+8],ebx [ebp+8]=2C,ebx=4
1000B837 0F82 6A010000 jb BasicCtr.1000B9A7
1000B83D 807D E4 07 cmp byte ptr ss:[ebp-1C],7 局部变量[ebp-1C]保存本段的类型, 4或者7
1000B841 74 06 je short BasicCtr.1000B849
1000B843 807D E4 06 cmp byte ptr ss:[ebp-1C],6 如果类型不为6,则执行1000B862
1000B847 75 19 jnz short BasicCtr.1000B862
1000B849 8AC3 mov al,bl 如果数据段的类型为7,则执行此语句。BL包含本段的长度
1000B84B 33FF xor edi,edi
1000B84D 32C7 xor al,bh al=(长度的低位 xor 长度的高位)
1000B84F 85DB test ebx,ebx
1000B851 76 0F jbe short BasicCtr.1000B862 如果长度为0,则表示没有密码
1000B853 8A0C37 mov cl,byte ptr ds:[edi+esi]
1000B856 32C8 xor cl,al
1000B858 F6D1 not cl DL=NOT ([数据] xor [数据段标志长度的高位xor 数据段标志长度的低位])
1000B85A 880C37 mov byte ptr ds:[edi+esi],cl
1000B85D 47 inc edi
1000B85E 3BFB cmp edi,ebx
1000B860 72 F1 jb short BasicCtr.1000B853 循环直到全部数据解调完毕
1000B862 53 push ebx 数据串的长度
1000B863 56 push esi 原始的需要变换的数据
1000B864 8D4D EC lea ecx,dword ptr ss:[ebp-14] 局部变量[ebp-14]存放强制CString类型转换以后的数据指针的指针,例如DB2E0600
1000B867 E8 10430000 call MFC42.CString::CString
1000B86C 8A45 E4 mov al,byte ptr ss:[ebp-1C] 局部变量[ebp-1C]保存本段的类型,4或者7
1000B86F 295D 08 sub dword ptr ss:[ebp+8],ebx 去掉已经处理的数据,执行后 [ebp+8]=28H,ebx为数据段中数据部分的长度
1000B872 03F3 add esi,ebx ESI指向下一个数据段的开始部分,ebx保存数据段中数据部分的长度指针
1000B874 33FF xor edi,edi
1000B876 84C0 test al,al 测试本段的类型是否为0
1000B878 C645 FC 01 mov byte ptr ss:[ebp-4],1 局部布尔型变量[ebp-4]=1
1000B87C 0F86 A3010000 jbe BasicCtr.1000BA25 如果本段的数据类型为0,则执行 1000BA25后退出
1000B882 3C 07 cmp al,7
1000B884 0F86 B6000000 jbe BasicCtr.1000B940 如果小于等于7,则跳转到1000B940执行。对于EWH来说就是这样
1000B88A 3C 08 cmp al,8
1000B88C 0F84 74010000 je BasicCtr.1000BA06 如果数据类型为8,则直接退出。
1000B892 3C 09 cmp al,9
1000B894 74 5D je short BasicCtr.1000B8F3
1000B896 3C 0A cmp al,0A
1000B898 0F85 87010000 jnz BasicCtr.1000BA25
1000B89E 8B4D D8 mov ecx,dword ptr ss:[ebp-28] 当数据类型为A时,执行本程序代码
1000B8A1 8D45 D4 lea eax,dword ptr ss:[ebp-2C]
1000B8A4 50 push eax
1000B8A5 E8 47FEFFFF call BasicCtr.1000B6F1
1000B8AA 8B45 D4 mov eax,dword ptr ss:[ebp-2C]
1000B8AD FF75 EC push dword ptr ss:[ebp-14]
1000B8B0 8B08 mov ecx,dword ptr ds:[eax]
1000B8B2 53 push ebx
1000B8B3 50 push eax
1000B8B4 FF91 BC000000 call dword ptr ds:[ecx+BC]
1000B8BA 8BD8 mov ebx,eax
1000B8BC 85DB test ebx,ebx
1000B8BE 0F85 12010000 jnz BasicCtr.1000B9D6
1000B8C4 8B45 D4 mov eax,dword ptr ss:[ebp-2C]
1000B8C7 6A 04 push 4
1000B8C9 8945 DC mov dword ptr ss:[ebp-24],eax
1000B8CC 8D45 DC lea eax,dword ptr ss:[ebp-24]
1000B8CF 50 push eax
1000B8D0 8D4D C0 lea ecx,dword ptr ss:[ebp-40]
1000B8D3 E8 A4420000 call MFC42.CString::CString
1000B8D8 50 push eax
1000B8D9 8D4D EC lea ecx,dword ptr ss:[ebp-14]
1000B8DC C645 FC 03 mov byte ptr ss:[ebp-4],3
1000B8E0 E8 C3400000 call MFC42.CString::operator=
1000B8E5 C645 FC 01 mov byte ptr ss:[ebp-4],1
1000B8E9 8D4D C0 lea ecx,dword ptr ss:[ebp-40]
1000B8EC E8 AB400000 call MFC42.CString::~CString
1000B8F1 EB 50 jmp short BasicCtr.1000B943
1000B8F3 8B4D D8 mov ecx,dword ptr ss:[ebp-28] 当数据类型为9时,执行这个操作
1000B8F6 8D45 D0 lea eax,dword ptr ss:[ebp-30]
1000B8F9 50 push eax
1000B8FA E8 4E180000 call BasicCtr.1000D14D
1000B8FF 8B45 D0 mov eax,dword ptr ss:[ebp-30]
1000B902 FF75 EC push dword ptr ss:[ebp-14]
1000B905 8B08 mov ecx,dword ptr ds:[eax]
1000B907 53 push ebx
1000B908 50 push eax
1000B909 FF51 78 call dword ptr ds:[ecx+78]
1000B90C 8BD8 mov ebx,eax
1000B90E 85DB test ebx,ebx
1000B910 0F85 D4000000 jnz BasicCtr.1000B9EA
1000B916 8B45 D0 mov eax,dword ptr ss:[ebp-30]
1000B919 6A 04 push 4
1000B91B 8945 DC mov dword ptr ss:[ebp-24],eax
1000B91E 8D45 DC lea eax,dword ptr ss:[ebp-24]
1000B921 50 push eax
1000B922 8D4D BC lea ecx,dword ptr ss:[ebp-44]
1000B925 E8 52420000 call MFC42.CString::CString
1000B92A 50 push eax
1000B92B 8D4D EC lea ecx,dword ptr ss:[ebp-14]
1000B92E C645 FC 02 mov byte ptr ss:[ebp-4],2
1000B932 E8 71400000 call MFC42.CString::operator=
1000B937 C645 FC 01 mov byte ptr ss:[ebp-4],1
1000B93B 8D4D BC lea ecx,dword ptr ss:[ebp-44]
1000B93E EB AC jmp short BasicCtr.1000B8EC
1000B940 6A 01 push 1 当数据段的类型=7时,直接从此处执行
1000B942 5F pop edi
1000B943 8B5D D8 mov ebx,dword ptr ss:[ebp-28] 局部变量[ebp-28]保存全局的标志结构
1000B946 8D45 EC lea eax,dword ptr ss:[ebp-14] 局部变量[ebp-14]存放强制类型转换以后的数据指针的指针,例如DB2E0600
1000B949 50 push eax EAX存放强制类型转换以后的数据指针
1000B94A 8D45 E8 lea eax,dword ptr ss:[ebp-18] 局部变量[ebp-18]存放强制类型转换以后的数据指针的指针,例如AST
1000B94D FF75 E4 push dword ptr ss:[ebp-1C] 局部变量[ebp-1C]中的第一个字节保存本段的类型,4或者7
1000B950 8BCB mov ecx,ebx
1000B952 50 push eax
1000B953 E8 B4FCFFFF call BasicCtr.1000B60C call 1000B60C(CString,Flag,CString)
1000B958 85FF test edi,edi
1000B95A 74 18 je short BasicCtr.1000B974
1000B95C 8B45 E0 mov eax,dword ptr ss:[ebp-20] 局部变量[ebp-28]第一次为0,为一个计数器
1000B95F 8B4B 64 mov ecx,dword ptr ds:[ebx+64] 存在于标志结构中,为一个全局地址
1000B962 8B55 F0 mov edx,dword ptr ss:[ebp-10] 局部变量[ebp-10]保存拷贝后的数据,即没有经过处理的。例如040300BDAF……
1000B965 C1E0 02 shl eax,2 EAX=EAX*2
1000B968 891401 mov dword ptr ds:[ecx+eax],edx 将未做解调的原始数据放到全局结构中某个指针指示的内存中
1000B96B 8B4B 78 mov ecx,dword ptr ds:[ebx+78] 存在于标志结构中,为一个全局地址
1000B96E 8B55 CC mov edx,dword ptr ss:[ebp-34] 局部变量[ebp-34]保存本数据段的总长度
1000B971 891401 mov dword ptr ds:[ecx+eax],edx 将数据长度放到全局结构中某个指针指示的内存中
1000B974 8065 FC 00 and byte ptr ss:[ebp-4],0 局部布尔型变量[ebp-4]=0
1000B978 8D4D EC lea ecx,dword ptr ss:[ebp-14]
1000B97B E8 1C400000 call MFC42.CString::~CString 清除数据段中的数据部分CString
1000B980 834D FC FF or dword ptr ss:[ebp-4],FFFFFFFF 局部布尔型变量[ebp-4]=-1,为True
1000B984 8D4D E8 lea ecx,dword ptr ss:[ebp-18]
1000B987 E8 10400000 call MFC42.CString::~CString 清除数据段中的标志部分CString,例如AST
1000B98C FF45 E0 inc dword ptr ss:[ebp-20] 局部变量[ebp-28]计数器加一
1000B98F 8B45 E0 mov eax,dword ptr ss:[ebp-20]
1000B992 3B45 B8 cmp eax,dword ptr ss:[ebp-48] 局部变量[ebp-48]保存数据的段数
1000B995 0F8C DFFDFFFF jl BasicCtr.1000B77A 循环解调每个数据段
1000B99B 8B45 08 mov eax,dword ptr ss:[ebp+8] 最后剩余的长度
1000B99E F7D8 neg eax
1000B9A0 1BC0 sbb eax,eax
1000B9A2 83E0 04 and eax,4
1000B9A5 EB 1E jmp short BasicCtr.1000B9C5
1000B9A7 837D F0 00 cmp dword ptr ss:[ebp-10],0
1000B9AB 74 09 je short BasicCtr.1000B9B6
1000B9AD FF75 F0 push dword ptr ss:[ebp-10]
1000B9B0 E8 FF3F0000 call MFC42.operator delete
1000B9B5 59 pop ecx
1000B9B6 834D FC FF or dword ptr ss:[ebp-4],FFFFFFFF
1000B9BA 8D4D E8 lea ecx,dword ptr ss:[ebp-18]
1000B9BD E8 DA3F0000 call MFC42.CString::~CString
1000B9C2 6A 04 push 4
1000B9C4 58 pop eax
1000B9C5 8B4D F4 mov ecx,dword ptr ss:[ebp-C]
1000B9C8 5F pop edi
1000B9C9 5E pop esi
1000B9CA 5B pop ebx
1000B9CB 64:890D 000000 mov dword ptr fs:[0],ecx
1000B9D2 C9 leave
1000B9D3 C2 0400 retn 4
1000B9D6 837D F0 00 cmp dword ptr ss:[ebp-10],0
1000B9DA 74 09 je short BasicCtr.1000B9E5
1000B9DC FF75 F0 push dword ptr ss:[ebp-10]
1000B9DF E8 D03F0000 call MFC42.operator delete
1000B9E4 59 pop ecx
1000B9E5 8B45 D4 mov eax,dword ptr ss:[ebp-2C]
1000B9E8 EB 12 jmp short BasicCtr.1000B9FC
1000B9EA 837D F0 00 cmp dword ptr ss:[ebp-10],0
1000B9EE 74 09 je short BasicCtr.1000B9F9
1000B9F0 FF75 F0 push dword ptr ss:[ebp-10]
1000B9F3 E8 BC3F0000 call MFC42.operator delete
1000B9F8 59 pop ecx
1000B9F9 8B45 D0 mov eax,dword ptr ss:[ebp-30]
1000B9FC 8B08 mov ecx,dword ptr ds:[eax]
1000B9FE 50 push eax
1000B9FF FF51 08 call dword ptr ds:[ecx+8]
1000BA02 8BF3 mov esi,ebx
1000BA04 EB 03 jmp short BasicCtr.1000BA09
1000BA06 6A 04 push 4
1000BA08 5E pop esi
1000BA09 8065 FC 00 and byte ptr ss:[ebp-4],0
1000BA0D 8D4D EC lea ecx,dword ptr ss:[ebp-14]
1000
朋友 到别人QQ首先是不好的行为 再就是如果你真想这么做的话就
1、在线密码破解 大家知道QQ可以利用代理服务器登录,这是一种保护措施。它不仅可以隐藏用户的真实IP地址,以避免遭受网络攻击,还可以加快登录速度,保证登录的稳定性。
在线密码破解和本地密码破解采用的技术方法类似,都是穷举法,只不过前者完全脱离了本地用户使用的QQ。它通过对登录代理服务器进行扫描,只要想盗的QQ号码在线,就可利用在线盗号工具实现远程TCP/IP的追捕,从而神不知鬼不觉地盗取QQ密码!
在线破解改变了本地破解那种被动的破解方式,只要是在线的QQ号码都可以破解,适用范围较广。但是由于它仍然采用穷举法技术,所以在枚举密钥位数长度以及类型时,校验时间很长,破解效率不高。同样,这种方法还受到电脑速度、网速等诸多因素的影响,因此比前面的本地破解更麻烦。
目前功能比较强大的一款QQ密码在线破解软件叫QQExplorer。它的破解操作分四步:第一步,在QQ起始号码和结束号码中填上想要盗取的QQ号码(此号码必须在线);第二步,在“添加或删除HTTP代理服务器”中输入代理服务器的IP地址和端口号码(如果你嫌自己寻找QQ代理服务器麻烦,可以使用一些现代的QQ代理公布软件);第三步,点击“添加测试”按钮,软件先自动检测此服务器是否正常,确定后将它加入代理服务器列表(此软件可填入多个代理服务器的地址,并且能够自动筛选不可用或者速度慢的服务器);第四步,点击“开始”按钮,开始在线密码破解
2、登录窗口破解
伪造QQ登录窗口的盗号方法非常简单,这是一种比较另类的木马破解方法(后面对木马破解有专门讲述)。先用盗号软件生成一个伪装的QQ主程序,它运行后会出现跟腾讯QQ一模一样的登录窗口,只要用户在这个伪登录窗口中登录,输入的QQ号及密码就会被记录下来,并通过电子邮件发送到盗号者指定的油箱中,在此以一款叫“狐Q”的软件为例,首次运行它时,它会把自身复制到QQ目录中,并把原来的QQ.exe文件改名为QQ.com(这样的更改不会影响QQ的正常运行)。设置完毕后,“狐Q”的原程序就会消失,伪装成QQ等待“猎物”上钩在其软件设置中,有一项设置可以决定真假QQ交替运行的次数,可以减少用户在使用QQ时产生的怀疑。比如说将“生效次数”设定为3,那么用户第一次运行的是真QQ了,也就是说在第三次运行时,用户的QQ号便被盗了!在QQ密码发送的过程中,如果发送失败,它还会把QQ号和密码记下来,等待下一次发送。
即时监视QQ登录窗口的盗号方法利用Windows窗口函数、句柄功能实现QQ号和密码的后台截取。此类软件几乎可以捕获Windows下所有标准密码框中的密码,如QQ、Outlook、屏幕保护程序、各种电子邮件客户端、各种游戏账号和上网账号等。捕获后,它也会将密码实时发送到盗号者指定的邮箱中。其代表性的盗号软件是“密码使者”,它几乎可以捕获Windows 9x/2000/XP下所有登录窗口中的密码,并且还能够盗取在网页中登录的各种密码。盗号在使用这款软件时,只须填上用于接收别人QQ密码的邮箱地址及保护密码,并把生成的盗号器文件传过去哄骗别人运行,然后就可以坐等密码上门!此软件与传统的键盘记录器不同,它在电脑每次开机时隐藏自启动,不管密码是用键盘输入的,还是复制、粘贴的,都能够有效地实时拦截!其注册版本居然还带有自动升级的功能,破坏力十分巨大。
3、消息诈骗
孔子曰:上士杀人用笔端,中士杀人用语言,下士杀人用石盘。远程盗取QQ密码还有一种大家最常见也是最简单最有效的方法,那就是利用不少人爱贪小便宜的弱点,进行人为的欺骗!
标题:腾讯关于xxxxx获奖通知
“QQ幸运儿:恭喜!!!您已经成为QQ在线网友齐抽奖的中奖用户。您将获赠精美T恤1件,并有机会得到NOKIA 7110手机1部。腾讯公司(tencent.com)注:奖品是以邮寄方式寄出,请您认真填写以下资料。如果填写错误,将被作为自动放弃获奖机会处理。 QQ号码: 密码: 姓名: E-mail地址: 身份证号码: 通讯地址: 联系电话: 邮编:”
比如我们的QQ经常会收到如下的陌生人消息。
如果你真的如实填写这些资料并傻傻的发送回去,不一会儿QQ密码就被盗了。
还有类似这样的消息:“亲爱的 号QQ用户,恭喜你你已经成为腾讯的幸运号码,腾讯公司送你QQ靓号:12345,密码:54321。请尽快登陆并修改密码,感谢您对腾讯公司的支持!”不少人一看,以为白捡的便宜来了,登录一试还是真的,于是就大大咧咧地笑纳了。但是,很多人为了方便,不管什么东西都爱使用相同的密码,所以当这个QQ号的密码被你改为与自己QQ号相同的密码时,自己QQ号的连同这个赠送的QQ号都得玩完!这是因为,赠送的QQ号已被盗号者申请过密码保护,当你更改密码后他就利用腾讯的密码保护功能把它收了回去,同时也收走你的QQ密码。如果你的QQ没有申请过密码保护,此刻就只能和它永别了。
4、更多的木马破解
“古希腊大军围攻特洛伊城,久攻不破,遂造一大木马藏匿将士于其中,大部队假装撤退而弃木马。城中得知敌退,将木马作战利品拖入城内。午夜时分,匿于木马中的将士开启城门四处纵火,城外伏兵涌入,里应外合,焚屠特洛伊城。”这是古希腊神话《木马屠城记》的故事,其中那只木马被黑客程序借用其名,表“一经潜入,后患无穷”之意。一个完整的木马程序由服务器端和控制端组成。所谓“中了木马”,是指用户的电脑中被安装了木马的服务器端,而拥有控制端的盗号者就通过网络远程控制该电脑,从而轻而易举地盗得该电脑中的QQ密码。
针对QQ的木马程序多不胜数,其中专门盗取QQ密码的也有一大堆,它们被偷偷地安装在用户的电脑中,随电脑启动而自动运行,如果用户使用QQ,那么其账号和密码就会被这些木马记录下来,并发送到木马安装者的邮箱中。前面已经介绍了两款通过登录窗口盗号的QQ木马,下面再介绍两款典型的。
第一款:极品QQ盗号2004
这是“极品QQ盗号”木马的最新版本。它的使用方法跟前面介绍的“密码使者”差不多,先再“设置”栏中填入接收QQ密码的邮箱地址和发送邮件的标题,然后把生成的盗号器偷偷地安装到别人的电脑里这个木马声称可以避过主流的杀毒软件,盗取QQ最新版本的密码,即QQ2004和QQ2004奥运特别版的密码。
第二款:QQ间谍3.0
使用此木马软件时,点击工具条上的“服务端”,按照提示生成服务端程序,然后把它偷偷地传到别人的电脑中,当受害者不小心运行了它,木马就被种上了。这个木马不仅可以盗号,还能悄悄地在后台记录受害者的QQ聊天信息,并下载可执行文件实现远程升级和远程执行脚本程序。另外再注册之后,它还可以直接远程监控对方电脑上的QQ聊天记录。
利用木马软件盗取QQ密码,显然比用前面介绍的那些破解方法更有效率!不仅节省时间,而且成功率也高。但是,如何把木马程序的服务器端安装在用户的电脑中,这是一个费心思的事儿。另外,很多功能强大的木马程序都是需要花钱注册,才能使用其全部功能。因此,对于那些水平参差不齐的盗号者而言,要想玩转木马程序,还得费点劲。
主动出击 教你夺回被人盗走的QQ号
随着网络的普及,如今很多朋友最重要的交流方式都是QQ,但是QQ安全是一个大家都非常关心的话题,盗取QQ号的工具也是层出不穷,随着近年来大家安全意识的提高,大家对QQ安全有了一定的重视,但是所谓黑客借助一些工具盗取QQ号同样是非常容易的事,下面就来看看黑客是如何利用工具软件结合邮箱轻松盗取他人的QQ号码的,以便我们更加有效地防范!
一、QQ密码发送者
该软件使用比较简单,你需要具有一定的“欺骗”能力,要想成功,最关键的在于如何想方设法让对方接收并运行你的木马,然后你就可以“坐收渔利”了!
下载并解压该软件,运行其中的可执行文件,运行窗口如图1。
在此窗口中,你只要输入一个有效的邮箱,然后点击“生成QQ木马”按钮即可生成一个木马,如图2。
接下来就是把该木马发送给对方,要能让对方运行,你需要将改木马改名,比如改名为“我的FLASH”、“XX软件”等,只要能让对方信任你并点击运行该木马即可!
一旦对方运行了该软件,并再次登陆QQ,那么对方的QQ号码、密码以及对方机器IP等信息都会通过邮件发送到你设置好的邮箱,你就等着查看自己的“战功”吧,如图3。
提示:
该软件非常适合在网吧内使用,只要你在别的机器上配置好该软件,然后换一台机器上网,一旦别人用那台机器登陆QQ,当然是把他的QQ拱手相送了!
二、无敌QQ密码盗取器
该软件是一个后台监控类的盗取QQ的软件,同样需要邮箱配合使用,具体设置比较简单。
运行该软件,配置窗口如图4。
在该窗口中,你需要设置好的所使用邮箱的SMTP服务器地址及用户名和密码,为了保证信件能正常接收,设置完毕后最好点击“测试”按钮进行测试。
提示:
邮件标题不填则将以QQ号码为标题,另外,最好把“发送多少个号码”设置小点,这个功能很有用,一旦程序发送邮件的数目达到了这个数的时候就不再发送了,否则可能导致你的信箱被撑破。
三、用QQ破密使者盗取QQ
QQ破密使者是一个本地破解QQ密码的黑客工具,你可以选择字典暴力破解本地QQ密码,速度极快,并可自己设定延迟时间,下面看看具体的使用方法。
下载该软件并解压,其中“QQPW_Crack8”是安装程序,里面还有一个“破解字典”文件夹(图5),这是破解QQ密码所要用到的字典文件,里面有4个字典文件,当然你也可以自己制作一个字典工自己使用。安装完该软件后,就可以实践一下该软件的威力了!
首先运行该软件,软件主界面如图6所示。
首先你需要配置“QQ路径”,点击“浏览”按钮找到QQ的主程序,“QQ号码”一栏中自动会显示用本机登陆的QQ号码,你只要选择其中一个即可,然后需要设置“字典路径”,点击后面的“浏览”按钮,找到字典文件所在位置,比如C:\WINDOWS\Desktop\新建文件夹\QQ破密使者\破解字典\dictionary1.txt,如图7。
设置好字典文件后,你还可以设置延迟时间,然后你就可以点击“开始破解”进行破解了!该软件会用字典文件中的密码一一尝试,破解过程如图8。
提示:破解速度跟你的电脑速度有关,在破解过程中不要打开别的什么程序以免影响破解速度!这种方法非常适合于在网吧盗取别人的QQ号!
四、轻松偷窥QQ2004聊天记录
随着QQ2004Beta的推出,广大“Q友”们又一次体验了新版本带给大家的惊喜,那么QQ2004Beta在安全性方面又怎么样呢?针对QQ2004Beta 推出的“QQ2004Beta免密码登陆器”也许同样会带给你一个“惊喜”!
使用“QQ2004Beta免密码登陆器”后,输入任意密码即可登陆QQ,这样你就可以偷窥他人的好友资料及聊天记录啦!注意该软件只适用于最新版本的QQ2004Beta。
下载并解压该软件后,必须将其中的“cr-QQ2004Beta(7.13).exe”拷贝到你的QQ2004Beta安装目录,通常为“C:\Program Files\Tencent\qq”,否则直接运行该软件会出现找不到QQ.exe文件的提示!
运行QQ2004Beta安装目录下的“cr-QQ2004Beta(7.13).exe”文件,弹出窗口如图9所示。
点击“确定”按钮后弹出QQ正常的登陆界面,如图10。
这里你随便输入一个密码,然后点击“登录”即可登陆,但这时会弹出一个“请再次输入登录密码”的提示框,不要管它,但是千万不要点击“取消”,否则就QQ就自动关闭了,如图11。
这时QQ就离线登陆了,你可以查看他人的好友资料及聊天记录。需要注意的是:这样登陆的QQ聊天窗口是不能打开的,所以要查看聊天记录和好友资料,必须依次点击“菜单”→“好友与资料”→“消息管理器”才行,或者你在QQ主界面上用鼠标右击某个好友,然后选择“聊天记录”或者“查看资料”选项。
主动出击 教你夺回被人盗走的QQ号码
很多朋友都有过QQ号被盗的经历,即使用“密码保护”功能找回来后,里面的Q币也已经被盗号者洗劫一空,碰到更恶毒的盗号者,还会将你的好友统统删除,朋友们将会永远得离开你。想过反击吗?什么,反击?别开玩笑了,我们只是菜鸟,不是黑客,我们只会看看网页,聊聊天,连QQ号是怎么被盗的都不知道,还能把盗号者怎么样呢?其实喜欢盗号的所谓“黑客”们,也只是利用了一些现成的盗号工具,只要我们了解了QQ号被盗的过程,就能作出相应防范,甚至由守转攻,给盗号者以致命一击。
一、知己知彼,盗号技术不再神秘
如今,还在持续更新的QQ盗号软件已经所剩无几,其中最为著名,流传最广的则非“啊拉QQ大盗”莫属,目前绝大多数的QQ号被盗事件都是由这个软件引起的。软件的使用条件很简单,只要你有一个支持smtp发信的邮箱或者一个支持asp脚本的网页空间即可。而且该木马可以将盗取的QQ号自动分为靓号和非靓号两种,并将它们分别发送到不同的信箱中,这也是“啊拉QQ大盗”如此流行的原因之一。接下来,便让我们先来了解一下其工作原理,以便从中找到反击的良方。
1、选择盗号模式
下载“啊拉QQ大盗”,解压后有两个文件:alaqq.exe、爱永恒,爱保姆qq.asp。其中alaqq.exe是“啊拉QQ大盗”的配置程序,爱永恒,爱保姆qq.asp是使用“网站收信”模式时需使用的文件。正式使用之前,还需要设置其参数。
“邮箱收信”配置:运行alaqq.exe,出现程序的配置界面。在“发信模式选择”选项中选中“邮箱收信”,在“邮箱收信”填写电子邮箱地址(建议使用程序默认的163.com网易的邮箱)。这里以邮箱n12345@163.com(密码n_12345)为例来介绍“邮箱收信”模式时的配置,并进行下文中的测试。此外,在“收信箱(靓)”和“收信箱(普)”中可以填入不同的邮箱地址用来接受QQ靓号和普通QQ号。然后在“发信服务器”下拉框中选择自己邮箱相应的smtp服务器,这里是smtp.163.com。最后填入发信箱的帐号、密码、全称即可。
设置完毕后,我们可以来测试一下填写的内容是否正确,点击下方“测试邮箱”按钮,程序将会出现邮箱测试状态。如果测试的项目都显示成功,即可完成邮箱信息配置。
“网站收信”配置:除了选择“邮箱收信”模式之外,我们还可以选择“网站收信”模式,让盗取的QQ号码自动上传到指定的网站空间。当然,在使用之前,也需要做一些准备工作。
用FTP软件将爱永恒,爱保姆qq.asp上传支持ASP脚本的空间,运行alaqq.exe,在“Asp接口地址”中输入爱永恒,爱保姆qq.asp所在的URL地址,那么,当木马截获QQ号码信息后,就会将其保存于爱永恒,爱保姆qq.asp同目录下的qq.txt文件中。
2、设置木马附加参数
接下来我们进行高级设置。如果勾选“运行后关闭QQ”,对方一旦运行“啊拉QQ大盗”生成的木马,QQ将会在60秒后自动关闭,当对方再次登录QQ后,其QQ号码和密码会被木马所截获,并发送到盗号者的邮箱或网站空间中。此外,如果希望该木马被用于网吧环境,那就需要勾选“还原精灵自动转存”,以便系统重起后仍能运行木马。除这两项外,其他保持默认即可。
3、盗取QQ号码信息
配置完“啊拉QQ大盗”,点击程序界面中的“生成木马”,即可生成一个能盗取QQ号码的木马程序。我们可以将该程序伪装成图片、小游戏,或者和其他软件捆绑后进行传播。当有人运行相应的文件后,木马会隐藏到系统中,当系统中有QQ登录时,木马便会开始工作,将相关的号码及密码截取,并按照此前的设置,将这些信息发送到邮箱或者网站空间。
二、练就慧眼,让木马在系统中无处可逃
现在,我们已经了解了“啊拉QQ大盗”的一般流程,那么如何才能从系统中发现“啊拉QQ大盗”呢?一般来说,如果碰到了以下几种情况,那就应该小心了。
·QQ自动关闭。
·运行某一程序后其自身消失不见。
·运行某一程序后杀毒软件自动关闭。
·访问杀毒软件网站时浏览器被自动关闭。
·如果杀毒软件有邮件监控功能的,出现程序发送邮件的警告框。
·安装有网络防火墙(例如天网防火墙),出现NTdhcp.exe访问网络的警告。
出现上述情况的一种或多种,系统就有可能已经感染了“啊拉QQ大盗”。当然,感染了木马并不可怕,我们同样可以将其从系统中清除出去。
1、手工查杀木马。发现系统感染了“啊拉QQ大盗”后我们可以手工将其清除。“啊拉QQ大盗”运行后会在系统目录中的system32文件夹下生成一个名为NTdhcp.exe的文件,并在注册表的启动项中加入木马的键值,以便每次系统启动都能运行木马。我们首先要做的就是运行“任务管理器”,结束其中的木马进程“NTdhcp.exe”。然后打开资源管理器中的“文件夹选项”,选择其中的“查看”标签,将其中“隐藏受保护的操作系统文件”选项前面的勾去掉。接着进入系统目录中的system32文件夹,将NTdhcp.exe文件删除。最后进入注册表删除NTdhcp.exe键值,该键值位于HKEY_LOCAL_MACHINE\Software \Microsoft \Windows \Currentversion \Run。
2、卸载木马。卸载“啊拉QQ大盗”很简单,只要下载“啊拉QQ大盗”的配置程序,运行后点击其中的“卸载程序”按钮即可将木马完全清除出系统。
三、以退为进,给盗号者以致命一击
忙乎了半天,终于把系统中的“啊拉QQ大盗”彻底清除,那么,面对可恶的盗号者,我们是不是应该给他一个教训呢?
1、利用漏洞,由守转攻
这里所谓的“攻”,并不是直接入侵盗号者的电脑,相信这种“技术活”并不适合大家。这里只是从盗号软件几乎都存在的漏洞入手,从而给盗号者一个教训。
那么这个漏洞是什么呢?
从此前对“啊拉QQ大盗”的分析中可以看到,配置部分填写了收取QQ号码信息邮件的邮箱帐号和密码,而邮箱的帐号和密码都是明文保存在木马程序中的。因此,我们可以从生成的木马程序中找到盗号者的邮箱帐号和密码。进而轻松控制盗号者的邮箱,让盗号者偷鸡不成反蚀把米。
提示:以上漏洞仅存在于将QQ号码信息以邮件发送方式的木马,如果在配置“啊拉QQ大盗”的过程中选择使用网站接收的方式则不存在该漏洞。
2、网络嗅探,反夺盗号者邮箱
当木马截取到QQ号码和密码后,会将这些信息以电子邮件的形式发送到盗号者的邮箱,我们可以从这里入手,在木马发送邮件的过程中将网络数据包截取下来,这个被截获的数据包中就含有盗号者邮箱的帐号和密码。截取数据包时我们可以使用一些网络嗅探软件,这些嗅探软件可以很轻松得截取数据包并自动过滤出密码信息。
·x-sniff
x-sniff是一款命令行下的嗅探工具,嗅探能力十分强大,尤其适合嗅探数据包中的密码信息。
将下载下来的x-sniff解压到某个目录中,例如“c:\”,然后运行“命令提示符”,在“命令提示符”中进入x-sniff所在的目录,然后输入命令“xsiff.exe
-pass -hide -log
pass.log”即可(命令含义:在后台运行x-sniff,从数据包中过滤出密码信息,并将嗅探到的密码信息保存到同目录下的pass.log文件中)。
嗅探软件设置完毕,我们就可以正常登录QQ。此时,木马也开始运行起来,但由于我们已经运行x-sniff,木马发出的信息都将被截取。稍等片刻后,进入x-sniff所在的文件夹,打开pass.log,便可以发现x-sniff已经成功嗅探到邮箱的帐户和密码。
·sinffer
可能很多朋友对命令行下的东西都有一种恐惧感,所以我们可以使用图形化的嗅探工具来进行嗅探。例如适合新手使用的sinffer。
运行sinffer之前,我们需要安装WinPcap驱动,否则sinffer将不能正常运行。
运行sinffer。首先我们需要为sinffer.exe指定一块网卡,点击工具栏上的网卡图标,在弹出的窗口中选择自己使用的网卡,点“OK”后即可完成配置。确定以上配置后,点击sinffer工具栏中的“开始”按钮,软件即开始了嗅探工作。
接下来,我们正常登陆QQ,如果嗅探成功,就会在sinffer的界面中出现捕获的数据包,其中邮箱帐号密码信息被很清晰得罗列了出来。
得到盗号者的邮箱帐号和密码以后,我们可以将其中的QQ号码信息邮件全部删除,或者修改他的邮箱密码,给盗号者一个教训,让我们菜鸟也正义一把。
如果你看到最后你会看到这句话的:小心这些软件,里面有毒的。