红队工具-C++编写远程桌面监控

admin 2025年2月24日13:45:21评论24 views字数 2675阅读8分55秒阅读模式

朋友们现在只对常读和星标的公众号才展示大图推送,建议大家把SecretTeam安全团队设为星标”,否则可能就看不到了啦!

红队工具-C++编写远程桌面监控

免责声明

"本文档所提供的信息旨在帮助网络安全专业人员更好地理解并维护他们负责的网站和服务器等系统。我们鼓励在获得适当授权的情况下使用这些信息。请注意,任何未经授权的使用或由此产生的直接或间接后果和损失,均由使用者自行承担。我们提供的资源和工具仅供学习和研究之用,我们不鼓励也不支持任何非法活动。"

"我们创建这个社区是为了促进技术交流和知识分享。我们希望每位成员都能在遵守法律法规的前提下参与讨论和学习。如果使用本文档中的信息导致任何直接或间接的后果和损失,我们提醒您,这将由您个人承担。我们不承担由此产生的任何责任。如果有任何内容侵犯了您的权益,请随时告知我们,我们将立即采取行动并表示诚挚的歉意。我们感谢您的理解和支持。"

1. 简介

在渗透中,我们为了分辨受害主机的工作内容,并分析他的重要性的时候,我们常常需要去对他进行一个桌面监控,以便我们获取到他的工作内容。下面我们就尝试使用C++编写一个桌面监控的程序。

2. Windows Api介绍

2.1 Winsock 网络编程相关

用法:

int WSAAPI WSAStartup(
  [in]  WORD      wVersionRequested,
  [out] LPWSADATA lpWSAData
);
1
  1. SAStartup

功能:初始化 Winsock 库。

作用:在使用 Winsock API 之前,必须调用此函数来初始化 Winsock 库并准备网络功能。

  1. socket

功能:创建一个套接字。

作用:用于建立网络通信的端点。

  1. connect

功能:将套接字连接到指定的服务器。

作用:建立客户端与服务器之间的 TCP 连接。

  1. send

功能:向套接字发送数据。

作用:将数据发送到已连接的服务器。

  1. closesocket

功能:关闭套接字。

作用:释放与套接字相关的资源。

  1. WSACleanup

功能:清理 Winsock 库。

作用:在程序结束时调用,释放 Winsock 资源。

调用 WSAStartup 成功后,应用程序才能继续进行网络编程。当应用程序完成所有网络操作后,应调用 WSACleanup 函数来释放资源并终止 Winsock 使用。

2.2 屏幕捕获相关

  1. GetDC

功能:获取设备上下文(DC)的句柄。

作用:获取整个屏幕的设备上下文,用于屏幕捕获。

  1. CreateCompatibleDC

功能:创建一个与指定设备上下文兼容的内存设备上下文。

作用:用于创建一个内存中的设备上下文,以便在其中绘制屏幕内容。

  1. CreateDIBSection

功能:创建一个设备无关位图(DIB)。

作用:用于创建一个位图对象,存储屏幕捕获的数据。

  1. SelectObject

功能:选择对象(如位图、字体等)到设备上下文中。

作用:将创建的位图对象选入内存设备上下文中。

  1. BitBlt

功能:执行位块传输操作。

作用:将屏幕内容复制到内存设备上下文中,实现屏幕捕获。

  1. DeleteObject

功能:删除图形对象。

作用:释放位图对象占用的资源。

  1. DeleteDC

功能:删除设备上下文。

作用:释放内存设备上下文占用的资源。

  1. ReleaseDC

功能:释放设备上下文。

作用:释放屏幕设备上下文。

2.3. 窗口和消息处理相关

  1. GetDesktopWindow

功能:获取桌面窗口的句柄。

作用:用于获取整个桌面窗口的句柄,以便获取屏幕尺寸。

  1. MonitorFromWindow

功能:获取与指定窗口关联的显示器句柄。

作用:用于确定当前窗口所在的显示器。

  1. GetMonitorInfo

功能:获取显示器的信息。

作用:用于获取显示器的工作区域和分辨率等信息。

  1. EnumDisplaySettings

功能:枚举显示设备的设置。

作用:用于获取显示器的当前分辨率等设置。

  1. RegisterClass

功能:注册窗口类

作用:定义窗口的回调函数、实例句柄和其他属性,为创建窗口做准备。

  1. CreateWindowEx

功能:创建窗口

作用:根据注册的窗口类创建一个窗口实例。

  1. ShowWindow

功能:显示或隐藏窗口

作用:控制窗口的显示状态,例如显示窗口或最小化窗口。

  1. PeekMessage

功能:检查消息队列

作用:检查消息队列,获取消息而不从队列中移除。

  1. TranslateMessage

功能:转换消息

作用:将虚拟键消息转换为字符消息。

  1. DispatchMessage

功能:派发消息

作用:将消息发送到窗口的回调函数进行处理。

  1. DispatchMessage

功能:派发消息

作用:将消息发送到窗口的回调函数进行处理。

  1. PostQuitMessage功能:发送退出消息

作用:向消息队列发送退出消息,终止消息循环。

  1. DefWindowProc

功能:默认窗口过程

作用:处理未明确处理的消息,提供默认行为。

2.4 系统和窗口信息相关

  1. GetModuleHandle

功能:获取模块句柄

作用:获取当前模块的句柄,用于窗口类注册。

  1. AdjustWindowRect

功能:调整窗口大小

作用:根据窗口的样式调整窗口的大小,确保客户区域符合指定大小。

  1. Sleep

功能:使线程暂停指定的时间。

作用:用于控制屏幕捕获和数据发送的频率。

3. 参数传递

// 发送结构体
xy data;
data.x = 10;
data.y = 20;
send(clientSocket, (char *) & data, sizeof(data), 0);

//接受结构体
 xy data;
 recv(clientSocket, (char*) & data, sizeof(data), 0);
 std::cout << "Received: x = " << data.x << ", y = " << data.y << std::endl;

4. 最终效果

将client上传至目标受害机器,运行,启动server端后如下:

红队工具-C++编写远程桌面监控

5. 工具获取

公众号回复 DesktopMonitor 即可获取。

完整代码会公布在 "纷传圈子"中。

荐历史文章阅读

原文始发于微信公众号(SecretTeam安全团队):红队工具-C++编写远程桌面监控

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年2月24日13:45:21
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   红队工具-C++编写远程桌面监控https://cn-sec.com/archives/3771969.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息