Kali Linux *** 扫描秘籍 第三章 端口扫描(二)
执行 TCP 端口扫描的一种方式就是执行一部分。目标端口上的 TCP 三次握手用于识别端口是否接受连接。这一类型的扫描指代隐秘扫描, SYN 扫描,或者半开放扫描。这个秘籍演示了如何使用 Scapy 执行 TCP 隐秘扫描。
为了使用 Scapy 执行 TCP 隐秘 扫描,你需要一个运行 TCP *** 服务的远程服务器。这个例子中我们使用 Metasploitable2 实例来执行任务。配置 Metasploitable2 的更多信息请参考之一章中的“安装 Metasploitable2”秘籍。
此外,这一节也需要编写脚本的更多信息,请参考之一章中的“使用文本编辑器*VIM 和 Nano)。
为了展示如何执行 SYN 扫描,我们需要使用 Scapy 构造 TCP SYN 请求,并识别和开放端口、关闭端口以及无响应系统有关的响应。为了向给定端口发送 TCP SYN 请求,我们首先需要构建请求的各个层面。我们需要构建的之一层就是 IP 层:
为了构建请求的 IP 层,我们需要将 IP 对象赋给变量 i 。通过调用 display 函数,我们可以确定对象的属性配置。通常,发送和接受地址都设为回送地址, 127.0.0.1 。这些值可以通过修改目标地址来修改,也就是设置 i.dst 为想要扫描的地址的字符串值。通过再次调用 dislay 函数,我们看到不仅仅更新的目标地址,也自动更新了和默认接口相关的源 IP 地址。现在我们构建了请求的 IP 层,我们可以构建 TCP 层了。
为了构建请求的 TCP 层,我们使用和 IP 层相同的技巧。在这个立即中, TCP 对象赋给了 t 变量。像之前提到的那样,默认的配置可以通过调用 display 函数来确定。这里我们可以看到目标端口的默认值为 HTTP 端口 80。对于我们的首次扫描,我们将 TCP 设置保留默认。现在我们创建了 TCP 和 IP 层,我们需要将它们叠放来构造请求。
我们可以通过以斜杠分离变量来叠放 IP 和 TCP 层。这些层面之后赋给了新的变量,它代表整个请求。我们之后可以调用 dispaly 函数来查看请求的配置。一旦构建了请求,可以将其传递给 sr1 函数来分析响应:
相同的请求可以不通过构建和堆叠每一层来执行。反之,我们使用单独的一条命令,通过直接调用函数并传递合适的参数:
要注意当 SYN 封包发往目标 Web 服务器的 TCP 端口 80,并且该端口上运行了 HTTP 服务时,响应中会带有 TCP 标识 SA 的值,这表明 SYN 和 ACK 标识都被激活。这个响应表明特定的目标端口是开放的,并接受连接。如果相同类型的封包发往不接受连接的端口,会收到不同的请求。
当 SYN 请求发送给关闭的端口时,返回的响应中带有 TCP 标识 RA,这表明 RST 和 ACK 标识为都被激活。ACK 为仅仅用于承认请求被接受,RST 为用于断开连接,因为端口不接受连接。作为替代,如果 SYN 封包发往崩溃的系统,或者防火墙过滤了这个请求,就可能接受不到任何信息。由于这个原因,在 sr1 函数在脚本中使用时,应该始终使用 timeout 选项,来确保脚本不会在无响应的主机上挂起。
如果函数对无响应的主机使用时, timeout 值没有指定,函数会无限继续下去。这个演示中, timout 值为 1秒,用于使这个函数更加完备,响应的值可以用于判断是否收到了响应:
Python 的使用使其更易于测试变量来识别 sr1 函数是否对其复制。这可以用作初步检验,来判断是否接收到了任何响应。对于接收到的响应,可以执行一系列后续检查来判断响应表明端口开放还是关闭。这些东西可以轻易使用 Python 脚本来完成,像这样:
在这个 Python 脚本中,用于被提示来输入 IP 地址,脚本之后会对定义好的端口序列执行 SYN 扫描。脚本之后会得到每个连接的响应,并尝试判断响应的 SYN 和 ACK 标识是否激活。如果响应中出现并仅仅出现了这些标识,那么会输出相应的端口号码。
运行这个脚本之后,输出会显示所提供的 IP 地址的系统上,前 100 个端口中的开放端口。
这一类型的扫描由发送初始 SYN 封包给远程系统的目标 TCP 端口,并且通过返回的响应类型来判断端口状态来完成。如果远程系统返回了 SYN+ACK 响应,那么它正在准备建立连接,我们可以假设这个端口开放。如果服务返回了 RST 封包,这就表明端口关闭并且不接收连接。此外,如果没有返回响应,扫描系统和远程系统之间可能存在防火墙,它丢弃了请求。这也可能表明主机崩溃或者目标 IP 上没有关联任何系统。
Nmap 拥有可以执行远程系统 SYN 扫描的扫描模式。这个秘籍展示了如何使用 Namp 执行 TCP 隐秘扫描。
为了使用 Nmap 执行 TCP 隐秘扫描,你需要一个运行 TCP *** 服务的远程服务器。这个例子中我们使用 Metasploitable2 实例来执行任务。配置 Metasploitable2 的更多信息请参考之一章中的“安装 Metasploitable2”秘籍。
就像多数扫描需求那样,Nmap 拥有简化 TCP 隐秘扫描执行过程的选项。为了使用 Nmap 执行 TCP 隐秘扫描,应使用 -sS 选项,并附带被扫描主机的 IP 地址。
在提供的例子中,特定的 IP 地址的 TCP 80 端口上执行了 TCP 隐秘扫描。和 Scapy 中的技巧相似,Nmap 监听响应并通过分析响应中所激活的 TCP 标识来识别开放端口。我们也可以使用 Namp 执行多个特定端口的扫描,通过传递逗号分隔的端口号列表。
在这个例子中,目标 IP 地址的端口 21、80 和 443 上执行了 SYN 扫描。我们也可以使用 Namp 来扫描主机序列,通过标明要扫描的之一个和最后一个端口号,以破折号分隔:
在所提供的例子中,SYN 扫描在 TCP 20 到 25 端口上执行。除了拥有指定被扫描端口的能力之外。Nmap 同时拥有配置好的 1000 和常用端口的列表。我们可以执行这些端口上的扫描,通过不带任何端口指定信息来运行 Nmap:
在上面的例子中,扫描了 Nmap 定义的 1000 个常用端口,用于识别 Metasploitable2 系统上的大量开放端口。虽然这个技巧在是被多数设备上很高效,但是也可能无法识别模糊的服务或者不常见的端口组合。如果扫描在所有可能的 TCP 端口上执行,所有可能的端口地址值都需要被扫描。定义了源端口和目标端口地址的 TCP 头部部分是 16 位长。并且,每一位可以为 1 或者 0。因此,共有 2 ** 16 或者 65536 个可能的 TCP 端口地址。对于要扫描的全部可能的地址空间,需要提供 0 到 65535 的端口范围,像这样:
这个例子中,Metasploitable2 系统上所有可能的 65536 和 TCP 地址都扫描了一遍。要注意该扫描中识别的多数服务都在标准的 Nmap 1000 扫描中识别过了。这就表明在尝试识别目标的所有可能的攻击面的时候,完整扫描是个更佳实践。Nmap 可以使用破折号记法,扫描主机列表上的 TCP 端口:
这个例子中,TCP 80 端口的 SYN 扫描在指定地址范围内的所有主机上执行。虽然这个特定的扫描仅仅执行在单个端口上,Nmap 也能够同时扫描多个系统上的多个端口和端口范围。此外,Nmap 也能够进行配置,基于 IP 地址的输入列表来扫描主机。这可以通过 -iL 选项并指定文件名,如果文件存放于执行目录中,或者文件路径来完成。Nmap 之后会遍历输入列表中的每个地址,并对地址执行特定的扫描。
Nmap SYN 扫描背后的底层机制已经讨论过了。但是,Nmap 拥有多线程功能,是用于执行这类扫描的快速高效的方式。
除了其它已经讨论过的工具之外,Metasploit 拥有用于 SYN 扫描的辅助模块。这个秘籍展示了如何使用 Metasploit 来执行 TCP 隐秘扫描。
为了使用 Metasploit 执行 TCP 隐秘扫描,你需要一个运行 TCP *** 服务的远程服务器。这个例子中我们使用 Metasploitable2 实例来执行任务。配置 Metasploitable2 的更多信息请参考之一章中的“安装 Metasploitable2”秘籍。
Metasploit 拥有可以对特定 TCP 端口执行 SYN 扫描的辅助模块。为了在 Kali 中启动 Metasploit,我们在终端中执行 msfconsole 命令。
为了在 Metasploit 中执行 SYN 扫描,以辅助模块的相对路径调用 use 命令。一旦模块被选中,可以执行 show options 命令来确认或修改扫描配置。这个命令会展示四列的表格,包括 name 、 current settings 、 required 和 description 。 name 列标出了每个可配置变量的名称。 current settings 列列出了任何给定变量的现有配置。 required 列标出对于任何给定变量,值是否是必须的。 description 列描述了每个变量的功能。任何给定变量的值可以使用 set 命令,并且将新的值作为参数来修改。
在上面的例子中, RHOSTS 值修改为我们打算扫描的远程系统的 IP 地址。地外,线程数量修改为 20。 THREADS 的值定义了在后台执行的当前任务数量。确定线程数量涉及到寻找一个平衡,既能提升任务速度,又不会过度消耗系统资源。对于多数系统,20 个线程可以足够快,并且相当合理。 PORTS 值设为 TCP 端口 80(HTTP)。修改了必要的变量之后,可以再次使用 show options 命令来验证。一旦所需配置验证完毕,就可以执行扫描了。
上面的例子中,所指定的远程主机的钱 100 个 TCP 端口上执行了 TCP SYN 扫描。虽然这个扫描识别了目标系统的多个设备,我们不能确认所有设备都识别出来,除非所有可能的端口地址都扫描到。定义来源和目标端口地址的TCP 头部部分是 16 位长。并且,每一位可以为 1 或者 0。因此,共有 2 ** 16 或 65536 个可能的 TCP 端口地址。对于要扫描的整个地址空间,需要提供 0 到 65535 的 端口范围,像这样:
在这个李忠,远程系统的所有开放端口都由扫描所有可能的 TCP 端口地址来识别。我们也可以修改扫描配置使用破折号记法来扫描地址序列。
这个例子中,TCP SYN 扫描执行在由 RHOST 变量指定的所有主机地址的 80 端口上。与之相似, RHOSTS 可以使用 CIDR 记法定义 *** 范围。
Metasploit SYN 扫描辅助模块背后的底层原理和任何其它 SYN 扫描工具一样。对于每个被扫描的端口,会发送 SYN 封包。SYN+ACK 封包会用于识别活动服务。使用 MEtasploit 可能更加有吸引力,因为它拥有交互控制台,也因为它是个已经被多数渗透测试者熟知的工具。
除了我们之前学到了探索技巧,hping3 也可以用于执行端口扫描。这个秘籍展示了如何使用 hping3 来执行 TCP 隐秘扫描。
为了使用 hping3 执行 TCP 隐秘扫描,你需要一个运行 TCP *** 服务的远程服务器。这个例子中我们使用 Metasploitable2 实例来执行任务。配置 Metasploitable2 的更多信息请参考之一章中的“安装 Metasploitable2”秘籍。
除了我们之前学到了探索技巧,hping3 也可以用于执行端口扫描。为了使用 hping3 执行端口扫描,我们需要以一个整数值使用 --scan 模式来指定要扫描的端口号。
上面的例子中,SYN 扫描执行在指定 IP 地址的 TCP 端口 80 上。 -S 选项指明了发给远程系统的封包中激活的 TCP 标识。表格展示了接收到的响应封包中的属性。我们可以从输出中看到,接收到了SYN+ACK 响应,所以这表示目标主机端口 80 是开放的。此外,我们可以通过输入够好分隔的端口号列表来扫描多个端口,像这样:
在上面的扫描输出中,你可以看到,仅仅展示了接受到 SYN+ACK 标识的结果。要注意和发送到 443 端口的 SYN 请求相关的响应并没有展示。从输出中可以看出,我们可以通过使用 -v 选项增加详细读来查看所有响应。此外,可以通过传递之一个和最后一个端口地址值,来扫描端口范围,像这样:
这个例子中,100 个端口的扫描足以识别 Metasploitable2 系统上的服务。但是,为了执行 所有 TCP 端口的扫描,需要扫描所有可能的端口地址值。定义了源端口和目标端口地址的 TCP 头部部分是 16 位长。并且,每一位可以为 1 或者 0。因此,共有 2 ** 16 或者 65536 个可能的 TCP 端口地址。对于要扫描的全部可能的地址空间,需要提供 0 到 65535 的端口范围,像这样:
hping3 不用于一些已经提到的其它工具,因为它并没有 SYN 扫描模式。但是反之,它允许你指定 TCP 封包发送时的激活的 TCP 标识。在秘籍中的例子中, -S 选项让 hping3 使用 TCP 封包的 SYN 标识。
在多数扫描工具当中,TCP 连接扫描比 SYN 扫描更加容易。这是因为 TCP 连接扫描并不需要为了生成和注入 SYN 扫描中使用的原始封包而提升权限。Scapy 是它的一大例外。Scapy 实际上非常难以执行完全的 TCP 三次握手,也不实用。但是,出于更好理解这个过程的目的,我们来看看如何使用 Scapy 执行连接扫描。
为了使用 Scapy 执行全连接扫描,你需要一个运行 UDP *** 服务的远程服务器。这个例子中我们使用 Metasploitable2 实例来执行任务。配置 Metasploitable2 的更多信息请参考之一章中的“安装 Metasploitable2”秘籍。
此外,这一节也需要编写脚本的更多信息,请参考之一章中的“使用文本编辑器*VIM 和 Nano)。
Scapy 中很难执行全连接扫描,因为系统内核不知道你在 Scapy 中发送的请求,并且尝试阻止你和远程系统建立完整的三次握手。你可以在 Wireshark 或 tcpdump 中,通过发送 SYN 请求并嗅探相关流量来看到这个过程。当你接收到来自远程系统的 SYN+ACK 响应时,Linux 内核会拦截它,并将其看做来源不明的响应,因为它不知道你在 Scapy 中 发送的请求。并且系统会自动使用 TCP RST 封包来回复,因此会断开握手过程。考虑下面的例子:
这个 Python 脚本的例子可以用做 POC 来演系统破坏三次握手的问题。这个脚本假设你将带有开放端 *** 动系统作为目标。因此,假设 SYN+ACK 回复会作为初始 SYN 请求的响应而返回。即使发送了最后的 ACK 回复,完成了握手,RST 封包也会阻止连接建立。我们可以通过观察封包发送和接受来进一步演示。
在这个 Python 脚本中,每个发送的封包都在传输之前展示,并且每个收到的封包都在到达之后展示。在检验每个封包所激活的 TCP 标识的过程中,我们可以看到,三次握手失败了。考虑由脚本生成的下列输出:
在脚本的输出中,我们看到了四个封包。之一个封包是发送的 SYN 请求,第二个封包时接收到的 SYN+ACK 回复,第三个封包时发送的 ACK 回复,之后接收到了 RST 封包,它是最后的 ACK 回复的响应。最后一个封包表明,在建立连接时出现了问题。Scapy 中可能能够建立完成的三次握手,但是它需要对本地 IP 表做一些调整。尤其是,如果你去掉发往远程系统的 TSR 封包,你就可以完成握手。通过使用 IP 表建立过滤机制,我们可以去掉 RST 封包来完成三次握手,而不会干扰到整个系统(这个配置出于功能上的原理并不推荐)。为了展示完整三次握手的成功建立,我们使用 Netcat 建立 TCP 监听服务。之后尝试使用 Scapy 连接开放的端口。
这个例子中,我们在 TCP 端口 4444 开启了监听服务。我们之后可以修改之前的脚本来尝试连接 端口 4444 上的 Netcat 监听服务。
这个脚本中,SYN 请求发送给了监听端口。收到 SYN+ACK 回复之后,会发送 ACK回复。为了验证连接尝试被系统生成的 RST 封包打断,这个脚本应该在 Wireshark 启动之后执行,来捕获请求蓄力。我们使用 Wireshark 的过滤器来隔离连接尝试序列。所使用的过滤器是 tcp (ip.src == 172.16.36.135 || ip.dst == 172.16.36.135) 。过滤器仅仅用于展示来自或发往被扫描系统的 TCP 流量。像这样:
既然我们已经精确定位了问题。我们可以建立过滤器,让我们能够去除系统生成的 RST 封包。这个过滤器可以通过修改本地 IP 表来建立:
在这个例子中,本地 IP 表的修改去除了所有发往被扫描主机的目标地址的 TCP RST 封包。 list 选项随后可以用于查看 IP 表的条目,以及验证配置已经做了修改。为了执行另一次连接尝试,我们需要确保 Natcat 仍旧监听目标的 4444 端口,像这样:
和之前相同的 Python 脚本可以再次使用,同时 WIreshark 会捕获后台的流量。使用之前讨论的显示过滤器,我们可以轻易专注于所需的流量。要注意三次握手的所有步骤现在都可以完成,而不会收到系统生成的 RST 封包的打断,像这样:
此外,如果我们看一看运行在目标系统的 Netcat 服务,我们可以注意到,已经建立了连接。这是用于确认成功建立连接的进一步的证据。这可以在下面的输出中看到:
虽然这个练习对理解和解决 TCP 连接的问题十分有帮助,恢复 IP 表的条目也十分重要。RST 封包 是 TCP 通信的重要组成部分,去除这些响应会影响正常的通信功能。洗唛按的命令可以用于刷新我们的 iptable 规则,并验证刷新成功:
就像例子中展示的那样, flush 选项应该用于清楚 IP 表的条目。我们可以多次使用 list 选项来验证 IP 表的条目已经移除了。
执行 TCP 连接扫描的同居通过执行完整的三次握手,和远程系统的所有被扫描端口建立连接。端口的状态取决于连接是否成功建立。如果连接建立,端口被认为是开放的,如果连接不能成功建立,端口被认为是关闭的。
端口扫描、跳板的详细教程!
特别提醒:千万不要做国内的主机啊!做日本或者 *** (台湾)吧,这样既不违反 我们国家的法律,也体现了自己的爱国心,哈哈(摘录别人的话),不过更好还是老老实实的做跳板,不要总是去想着做什么坏事。 千万不要用国内的主机做试验啊,否则等着警车来接你啦 怎样 *** *** 跳板 说明:(1)这篇文章是我自己做跳板的一点体会,是些给那些从来没有做过跳板的网友看的。做过跳板的网友就不用看了。 (2)本文讲述的是做跳板最简单,最基础的 *** ,仅仅是给新手提供一个思路,一些稍微复杂的 *** 比如unicode,CGI等等这里不讲。 (3)做跳板毕竟算是一种入侵行为,有了跳板和肉鸡以后,千万要用在该用的地方,不要刻意去“黑“别人啊!! 准备工作: 做一件事情,至少需要两个方面的准备工作:相关的基础知识和做这件事情的工具。 基本的工具:(1)x-scan v1.3:强大的漏洞扫描工具,对于初学者来说非常好的一个工具。我们主要用他来扫描一些基本的漏洞(主要是NT弱密码),用法在后面会具体说。(其实流光很不错的,但是我觉得流光再扫NT弱密码的时候太烦了) (2)superscan:非常快速的端口扫描工具,可以在很短的时间里发现某个IP域上IP的分布。为什么用他呢?主要是避免盲目扫描,提高效率:某个 IP域上IP地址的分布不是连续的,也许他从xxx.xxx.0.0-xxx.xxx.50.255上每个IP都是有计算机存在的,而从 xxx.xxx.51.0- xxx.xxx.100.255每个IP都没有计算机存在。如果你事先不知道这一段上根本没有主机的话,花了很长时间去扫描也不会有结果,浪费时间和金钱 啊。 (3)fluxay 4.0:大名鼎鼎的扫描工具,我们主要用它的NT管道命令功能来连接目标主机,以及添加用户、远程启动服务等。注意了:更好是fluxay 4.0版本。 (4)windows2000下的c:\命令提示符工具:也就是说,跳板的 *** 至少是要在windows2000以上的操作系统下进行。 (5)sksockserver.exe:做跳板的主角,就是用它来实现远程主机的socks5 *** 功能的。 (6)全球IP地址分配表:这个对于高手来说是不必要的,用他的目的是考虑到很多以前没有做过跳板的网友对IP的分布不了解,我们主要的目标还是国外的主 机,因此对国外的IP分布有一些了解是很重要的,也是以后我们选定所要扫描的IP域的主要根据。这样的话,就省得再去用“追捕”软件查找IP的实际所在地 了。 好了工具准备完了,现在了解一下做跳板的大概过程。 注意:刚才你下载的这些东东不是放在你的硬盘上!放在什么地方呢?放在“肉鸡”上! 就是说我们做跳板的过程是在肉鸡上完成的。 名词解释肉鸡:肉鸡是开了3389端口微软终端服务(microsoft terminal service),又有弱密码的高速服务器,俗称“肉鸡”。我们之所以要在肉鸡上做,是出于安全考虑,因为做跳板毕竟是一种非法入侵行为,我们需要隐藏自 己的踪迹,当然,不想用肉鸡也可以,前提是你有足够的带宽,而且不怕公安上门找你麻烦。(当然,进入肉鸡本身也是一种非法的入侵)。我们用 mstsc.exe这个软件登陆上肉鸡,就可以像平时我们在自己电脑上一样用鼠标控制远程的服务器(也就是肉鸡)做我们要做的事情。 过程:为了叙述的方便,先假设我们已经有了一个肉鸡。下面的步骤没有特殊说明都是在“肉 鸡”上完成的。 (1) 先在自己的机器上打开全球IP地址分配表,选取一个IP区域 (2) 登陆上肉鸡,把刚才说到的工具在肉鸡上下载好,就用肉鸡自己的IE下载就行了。 (3) 主要的过程是:先用superscan扫描(1)选定的IP区域,找到其中一个IP很集中的区域,然后放到x-scan进行漏洞扫描(因为是面对以前没有 做过跳板的网友,所以这里只介绍用NT弱密码 *** 跳板),找到若干个有弱密码的IP,把sksockserver.exe上传到目标主机上,然后远程启动 sksockserver。这样,跳板就做好了。 我们一起来实践一下,做一个跳板: (1) 刚才说过了,没有肉鸡做跳板是不行的,尤其是拨号上网的网友(速度慢)。我们首先登陆上一个已经知道的肉鸡:xxx.xxx.xxx.xxx。帮刚才上面 提到的东东都准备好。更好是集中放置,这样便于我们使用。不要到处乱放,否则主人一进来就知道有人进过他的机器。 (2) 我们选择210.85.0.0-210.85.50.255这一段IP(台湾),放在superscan里面去,把superscan的端口设置改成只有 80一个端口,然后确定,开始扫描。这时,在下面的输出框里面,就会出现一大批的活跃IP,看见了吗?210.85.0.0-210.85.40.255 这一段上都是活跃的IP。现在我们随便选一个IP区域,比如我们就选210.85.0.0-210.85.5.255这一段,不要太长,因为下一步我们要 把他们放进x-scan进行扫描,x-scan扫描速度并不是很快,太多的话,会降低效率,而且IP区域过长的话,有可能使x-scan出现误报。 x-scan的使用 *** 这里就不详细叙述了这里要做的就是:在“设置”菜单里,先选“扫描模块”,选择“开放端口”和“NT弱密码”两个选项,在“扫描参 数”里,填上我们刚才选定的IP范围:210.85.0.0-210.85.5.255,接着,在其中“端口相关设置”里,把原先一长串的端口去掉,只填 上80,3389两个端口,其他的设置就用默认的好了,不用再改了。然后就开始搜索,这需要大概你8、9分钟的时间(因为x-scan虽然简单,但是速度慢),这段时间你大可以做一点自己的其他事情,等时间差不多了,你再看看x-scan里面的结果:好的,N个机器的密码为空,这下子有收获了!但是要说的 是,x-scan有一些误报,大家一定要有耐心去试啊! (3) 我们随便从中间随便选了一个,比如:210.85.0.14:administrator 空。接下来的事情, 是要验证它到底接不接受我们的连接,密码是不是正确。现在用到流光了,打开流光,选择“工具”里面的“NT管道远程命令”,出现对话框,把刚才的IP,用户名,密码填进去,然后回车。在界面上“NTCMD”提示符后面打入CMD,连接成功,屏幕上出现了“C:\WINNT\ SYSTEM32”的提示符。这证明,刚才的用户名和密码是正确的,这台机器已经基本是你的了。好了,我们进去了,想想我们要做什么呢?对了,是做跳板,我们还要把sksockserver.exe放到210.85.0.14上,这样才能启动服务,让这台机器做为跳板!怎么把这个东东放上去呢: 调出肉鸡上的CMD,在命令提示符下按下面的 *** 做: c:\net use \\210.85.0.14\ipc$ “”/user:“administrator”(建立IPC连接) 系统提示:命令成功完成。 Copy c:\sksockserver.exe \\210.85.0.14\admin$ 系统提示:成功复制一个文件。 这样我们就成功地把sksockserver.exe传到了目标主机上。接下来的任务就是把他远程启动就行了。 我们又回到刚才流光的NTCMD里,在提示符下按下面的 *** 做: c:\sksockserver –install 系统提示:snake sockproxy service installed c:\sksockserver –config port 1949(端口自己来定,这里的1949是随便选的) 系统提示:the port value have set to 1949 c:\sksockserver –config starttype 2 系统提示:the starttype have set to 2---auto c:\net start skserver 系统提示服务启动成功。 这个时候,这台机器已经成为你的跳板了。 下面简单的说一说自己找肉鸡的 *** 。 工具:(1)sockscap:强大的socks *** 调度软件。 (2)snake的 *** 跳板GUI(图形界面程序) (3)mstsc:微软terminal service终端服务的客户端程序。用于登陆3389肉 鸡。有了它,我们就可以象控制自己的机器一样控制终端服务器,做我们的事情了。 其实前面两个都是附属的工具,只有mstsc才是真正唱主角的。 Sockscap和sksockserver GUI配合实现实现跳板的使用,可以隐藏我们的 入侵痕迹。 我们现在还没有肉鸡,那么一切事情都只能在我们自己的机器上做了,如果你不放心的话 可以到网吧去做下面的事情。 但是,要提醒的是,千万不要做国内的主机啊!做日本或者 *** (台湾)吧,这样既不违反 我们国家的法律,也体现了自己的爱国心,哈哈(摘录别人的话),不过更好还是老老实实 的做跳板,不要总是去想着做什么坏事。 步骤其实跟做跳板也很相似的。刚才我们在x-scan搜索的端口里设置了3389,如果一台机 器开了3389端口,而且有了弱密码的话,那这样的机器就是所谓的“肉鸡”了。(当然输入 法漏洞有的时候也可以做成肉鸡,但是毕竟现在有输入法漏洞的机器太少了,远远不及有弱 密码的终端服务器那么多,所以我们还是选择了后者,而且输入法漏洞只适合国内机器。一 个一个去试验,真是太浪费时间了!会烦死的。) 具体搜索过程跟刚才在作跳板里是一样的,找到一个开了3389端口服务,而且有弱密码的 机器。我们在上面搜索的结果中仔细地看看,终于发现了一台:210.85.2.84:frank41:空。而 且开了3389服务。要把这台机器变成自己地机器那肯定要有自己的登录名,否则每次总是 用别人的,那还怎么叫是自己的机器?我们现在来为自己添加一个用户名,把自己提升成为 root权限,那么我们就可以做任何事情了。打开流光,选择“工具”里面的“NT管道命令” 填上刚才得到的用户名跟密码:frank41:空。然后确定,进入NTCMD界面,在提示符下 键入:CMD,连接成功以后在系统提示符下如下操作: c:\net user admin /add(添加一个admin用户) c:\net user admin shonline788(使得admin的密码是shonline788) c:\net localgroup administrators admin /add(把用户admin提升为administrator即管理员身份) 这样我们就成功的在这台机器中取得了root权限,可以作任何事情了,但是别做坏事噢。 下一步,就要用上我们刚才准备的这些工具了。在网上搞几个socks *** ,把sockscap和 sksockserverGUI设置好,把mstsc的图标拖到sockscap里去,双击mstsc的图标,在其中填 上你刚才找到的肉鸡IP:210.85.2.84,然后回车进行连接。成功以后,会出现一个跟我们平 时登陆windows2000时候一样的一个蓝色的界面,在里面填上我们刚才添加的用户名和密 码,回车登陆。登陆成功以后就会出现该主机的图形界面,这个时候你就可以象操作自己的 机器一样,操作别人的机器。至此,你已经获得了一台肉鸡。就可以做我们上面做过的事情 了。
渗透测试之端口扫描
端口扫描:端口对应 *** 服务及应用端程序
服务端程序的漏洞通过端口攻入
发现开放的端口
更具体的攻击面
UDP端口扫描:
如果收到ICMP端口不可达,表示端口关闭
如果没有收到回包,则证明端口是开放的
和三层扫描IP刚好相反
Scapy端口开发扫描
命令:sr1(IP(dst="192.168.45.129")/UDP(dport=53),timeout=1,verbose=1)
nmap -sU 192.168.45.129
TCP扫描:基于连接的协议
三次握手:基于正常的三次握手发现目标是否在线
隐蔽扫描:发送不完整的数据包,不建立完整的连接,如ACK包,SYN包,不会在应用层访问,
僵尸扫描:不和目标系统产生交互,极为隐蔽
全连接扫描:建立完整的三次握手
所有的TCP扫描方式都是基于三次握手的变化来判断目标系统端口状态
隐蔽扫描:发送SYN数据包,如果收到对方发来的ACK数据包,证明其在线,不与其建立完整的三次握手连接,在应用层日志内不记录扫描行为,十分隐蔽, *** 层审计会被发现迹象
僵尸扫描:是一种极其隐蔽的扫描方式,实施条件苛刻,对于扫描发起方和被扫描方之间,必须是需要实现地址伪造,必须是僵尸机(指的是闲置系统,并且系统使用递增的IPID)早期的win xp,win 2000都是递增的IPID,如今的LINUX,WINDOWS都是随机产生的IPID
1,扫描者向僵尸机发送SYN+ACY,僵尸机判断未进行三次握手,所以返回RST包,在RST数据包内有一个IPID,值记为X,那么扫描者就会知道被扫描者的IPID
2,扫描者向目标服务器发送SYN数据包,并且伪装源地址为僵尸机,如果目标服务器端口开放,那么就会向僵尸机发送SYN+ACK数据包,那么僵尸机也会发送RST数据包,那么其IPID就是X+1(因为僵尸机足够空闲,这个就为其收到的第二个数据包)
3,扫描者再向僵尸机发送SYN+ACK,那么僵尸机再次发送RST数据包,IPID为X+2,如果扫描者收到僵尸机的IPID为X+2,那么就可以判断目标服务器端口开放
使用scapy发送数据包:首先开启三台虚拟机,
kali虚拟机:192.168.45.128
Linux虚拟机:192.168.45.129
windows虚拟机:192.168.45.132
发送SYN数据包:
通过抓包可以查看kali给linux发送syn数据包
linux虚拟机返回Kali虚拟机SYN+ACK数据包
kali系统并不知道使用者发送了SYN包,而其莫名其妙收到了SYN+ACK数据包,便会发RST包断开连接
也可以使用下列该命令查看收到的数据包的信息,收到对方相应的SYN+ACK数据包,scapy默认从本机的80端口往目标系统的20号端口发送,当然也可以修改
如果向目标系统发送一个 随机端口:
通过抓包的获得:1,kali向linux发送SYN数据包,目标端口23456,
2,Linux系统由自己的23456端口向kali系统的20号端口返回RST+ACK数据包,表示系统端口未开放会话结束
使用python脚本去进行scapy扫描
nmap做隐蔽端口扫描:
nmap -sS 192.168.45.129 -p 80,21,110,443 #扫描固定的端口
nmap -sS 192.168.45.129 -p 1-65535 --open #扫描该IP地址下1-65535端口扫描,并只显示开放的端口
nmap -sS 192.168.45.129 -p --open #参数--open表示只显示开放的端口
nmap -sS -iL iplist.txt -p 80
由抓包可知,nmap默认使用-sS扫描,发送SYN数据包,即nmap=nmap -sS
hping3做隐蔽端口扫描:
hping3 192.168.45.129 --scan 80 -S #参数--scan后面接单个端口或者多个端口.-S表示进行SYN扫描
hping3 192.168.45.129 --scan 80,21,25,443 -S
hping3 192.168.45.129 --scan 1-65535 -S
由抓包可得:
hping3 -c 100 -S --spoof 192.168.45.200 -p ++1 192.168.45.129
参数-c表示发送数据包的数量
参数-S表示发送SYN数据包
--spoof:伪造源地址,后面接伪造的地址,
参数-p表示扫描的端口,++1表示每次端口号加1,那么就是发送SYN从端口1到端口100
最后面跟的是目标IP
通过抓包可以得知地址已伪造,但对于linux系统(192.168.45.129)来说,它收到了192.168.45.200的SYN数据包,那么就会给192.168.45.200回复SYN+ACK数据包,但该地址却是kali伪造的地址,那么要查看目标系统哪些端口开放,必须登陆地址为kali伪造的地址即(192.168.45.200)进行抓包
hping3和nmap扫描端口的区别:1,hping3结果清晰明了
2,nmap首先对IP进行DNS反向解析,如果没成功,那么便会对其端口发送数据包,默认发送SYN数据包
hping3直接向目标系统的端口发送SYN数据包,并不进行DNS反向解析
全连接端口扫描:如果单独发送SYN数据包被被过滤,那么就使用全连接端口扫描,与目标建立三次握手连接,结果是最准确的,但容易被入侵检测系统发现
response=sr1(IP(dst="192.168.45.129")/TCP(dport=80,flags="S"))
reply=sr1(IP(dst="192.168.45.129")/TCP(dport=80,flags="A",ack=(response[TCP].seq+1)))
抓包情况:首先kali向Linux发送SYN,Linux回复SYN+ACK给kali,但kali的系统内核不清楚kali曾给linux发送给SYN数据包,那么kali内核莫名其妙收到SYN+ACK包,那么便会返回RST请求断开数据包给Linux,三次握手中断,如今kali再给Linux发ACK确认数据包,Linux莫名其妙收到了ACK数据包,当然也会返回RST请求断开数据包,具体抓包如下:
那么只要kali内核在收到SYN+ACK数据包之后,不发RST数据包,那么就可以建立完整的TCP三次握手,判断目标主机端口是否开放
因为iptables存在于Linux内核中,通过iptables禁用内核发送RST数据包,那么就可以实现
使用nmap进行全连接端口扫描:(如果不指定端口,那么nmap默认会扫描1000个常用的端口,并不是1-1000号端口)
使用dmitry进行全连接端口扫描:
dmitry:功能简单,但功能简便
默认扫描150个最常用的端口
dmitry -p 192.168.45.129 #参数-p表示执行TCP端口扫描
dmitry -p 192.168.45.129 -o output #参数-o表示把结果保存到一个文本文档中去
使用nc进行全连接端口扫描:
nc -nv -w 1 -z 192.168.45.129 1-100: 1-100表示扫描1-100号端口
参数-n表示不对Ip地址进行域名解析,只把其当IP来处理
参数-v表示显示详细信息
参数-w表示超时时间
-z表示打开用于扫描的模式
端口扫描器使用教程
端口扫描器一个端口扫描器,能够扫描出你的电脑或者IP和某一个网站的端口是否被占用,可以扫描哪些端口是开放的,可以自定义IP或网址,自定义开始端口,结束端口进行扫描,工具多线程运行,扫描速度非常快,用来测试端口扫描是方便了。
如果你要查询80是否被占用?
你只需要在开始端口和结束端口输入:80即可!
你也可以输入1-9999进行扫描!
软件名称:
端口扫描器
v1.0
绿色版
软件大小:540KB下载地址:
如何在服务器上进行端口扫描?
①Windows系统服务器,用dos扫描打开的端口
快捷键WIN+R在运行中输入“cmd”确定
netstat -na
②Linux系统服务器,终端中用nc命令扫描端口
nc -v -w 2 `10.246.46.15 -i` 3901-3905
#扫描ip地址10.246.46.15的端口开启情况
nc: connect to 10.246.46.15 port 3901 (tcp) failed: Connection refused
nc: connect to 10.246.46.15 port 3902 (tcp) failed: Connection refused #端口关闭
Connection to 10.246.46.15 3903 port [tcp/charsetmgr] succeeded! #端口开通
nc: connect to 10.246.46.15 port 3904 (tcp) failed: Connection refused
Connection to 10.246.46.15 3905 port [tcp/mupdate] succeeded! #端口开通
0条大神的评论