美文网首页
shellcode 实现键盘记录样本分析

shellcode 实现键盘记录样本分析

作者: 看点书 | 来源:发表于2018-05-24 19:52 被阅读0次

    1.样本来源于《恶意代码分析实战》的实验样本Lab11-03.exe和Lab11-03.dll.
    2.首先对Lab11-03.exe进行基础分析,查看字符串和导入导出函数。用strings可以看到

            C:\WINDOWS\System32\inet_epar32.dll
            zzz69806582
            net start cisvc
            C:\WINDOWS\System32\%s
            cisvc.exe
            Lab11-03.dll
    

    等字符串,C:\WINDOWS\System32\inet_epar32.dll表示程序可能加载该dll,net start cisvc是服务的启动方式,cisvc.exe代表该程序可能被启动。然后对Lab11-03.dll进行分析,出现了

        C:\WINDOWS\System32\kernel64x.dll
        zzz69806582
        GetForegroundWindow
        GetAsyncKeyState
    

    等,C:\WINDOWS\System32\kernel64x.dll表示程序可能加载该dll,zzz69806582暂时还看不出来有什作用,GetForegroundWindow,GetAsyncKeyState表示这很可能是一个键盘记录器。
    3.然后进行动态分析,命令行切到当前目录下,运行Lab11-03.exe,用procmon和procexp进行监控,

    image

    如图可以看到该样本启动了一个服务。至于启动什么服务,通过procmon来具体看。
    在进程栏看到了net start cisvc

    image

    在文件操作一栏我们可以看到创建并写入了文件inet_epar32.dll,打开了cisvc.exe
    但是并没有写入文件的操作。

    image

    在注册表一栏并没有看到什么信息。此时我们更换过滤条件,查看一下cisvc.exe进行了哪些操作。可以看到加载inet_epar32.dll,在系统文件夹中创建了kernel64x.dll文件,并写入了一些内容猜测是键盘记录的内容。

    image

    4.下面进行静态高级分析。把Lab11-03.exe和Lab11-03.dll分别载入ida进行分析。
    代码反编译为c可以看到很简单。

    image

    首先是把Lab11-03.dll复制为C:\WINDOWS\System32\inet_epar32.dll,然后sub_401070函数时对cisvc.exe的操作,看到是对cisvc.exe进行文件映射然后byte_409030位置的314个字节的内容写到cisvc.exe的开始位置,很显示cisvc.exe插入了一段shellcode,下面查看这段shellcode,在409030位置可以看到是原始字节内容,按c可以反汇编为汇编代码,如图

    image
    image

    如图是shellcode 代码,在sehcode 末尾是一些字符串,按a可以显示完整字符串,猜测此shellc是加载该dll,后面的字符串仍然不知道是什么。

    image

    此时我们用ida加载inet_epart32.dll也即是Lab11-03.dll,在导出函数中我们可以看到是以上的未知字符串刚好是其的导出函数,分析该函数看到仅仅只是创建了一个线程,分析该线程,可以看到此线程是实现键盘记录的,其记录保存在C:\WINDOWS\System32\kernel64x.dll中。

    下面对cisvc.exe进行分析。分析插入shellcode前后的变化。首先用PE view查看pe头的变化。可以看到入口位置发生了变化。

    image

    分别用ida载入,可以看到插入shellcode的cisvc.exe入口点直接就是shellcode代码,在od中载入,然后单步运行观察shellcode的功能。

    image

    如图1001b0a位置是加载C:\WINDOWS\System32\inet_epar32.dll的位置,下面是获取
    zzz69806582函数地址。到此整个流程就分析完了。

    Lab11-03.exe把Lab11-03.dll复制为C:\WINDOWS\System32\inet_epar32.dll,启动cisvc服务,然后再cisvc.exe中插入一段shellcode,来实现键盘记录,记录保存在C:\WINDOWS\System32\kernel64x.dll。打开notepad随便输入进行测试,然后用flexhex打开C:\WINDOWS\System32\kernel64x.dll,可以看到记录了notepad和输入的内容。


    image

    相关文章

      网友评论

          本文标题:shellcode 实现键盘记录样本分析

          本文链接:https://www.haomeiwen.com/subject/agfejftx.html