资源简介
官方手册
在入侵中它是最经典的工具之一 ,NetCat被所有的网络安全爱好者和研究者称之为瑞士军刀,通过名字大家就能知道他的功能足够丰富。
nc的全称为NetCat,它能够建立并接受传输控制协议(TCP)和用户数据报协议(UDP)的连接,Netcat可在这些连接上读写数据,直到连接关闭为止。它可以通过手工或者脚本与应用层的网络应用程序或服务进行交互。从技术上来讲,NetCat并不能产生UDP连接,因为UDP是一种无连接的协议。NetCat没有图形界面,很粗糙,很原始。
nc可以通过很多途径下载得到,unix和Winodws平台下的官方站点是:http://www.atsake.com/research/tools/network_utilities.
nc的命令行
nc的基本命令行形式是 nc [options] host ports,其中host是要扫描的主机名或IP地址,ports要么是一个单独的端口,要么是一个端口范围(用m-n的形式指定),要么是一系列用空格隔开的单个端口。
-d 只对Windows操作系统有用,该选项使NetCat以隐蔽模式工作,从而脱离MS-DOS命令提示符下环境运行,使得nc不需要保持打开命令窗口便可在监听模式下运行,也可以帮助黑客很好地隐藏监听NetCat实例而不被系统管理员发现。
-e 如果NetCat使用gaping_security_hole选项进行编译,那么只要某人在NET后台所监听的任何端口上建立连接,该NetCat都将执行,且客户端的NetCat会通过管道将I/O传输到在别处监听的另一个NetCat实例中。使用这个选项非常危险,除非你对nc相当了解,起码知道你自己在做什么。这是在系统中建立后门shell的一个非常快捷且容易的方法。
-i 延时间隔,表示在两次数据发送之间nc等待的时间。例如:当经过管道传输一个文件到nc的时候,在传输输入的下一行之前,nc将等待的秒数。当使用nc对一台主机的多个端口之间进行操作时,在切换到下一个端口之前,nc等待的秒数。这样可以使黑客在进行数据传输或对一个服务进行攻击的时候更加隐蔽,也可以帮助你的端口扫描不被入侵检测系统和系统管理员发现。
-g这个选项具有欺骗性。nc支持loose source routing(松散源路由)。你可以在命令行中指定多达8个-g选项来强迫nc流量经过特定的IP地址,这在你为流量设置伪造的源IP地址时,可以利用这个方法达到通过防火墙的过滤器或者允许访问主机列表,希望接收到从主机返回的响应。
-G该选项让用户在-g选项所指定的路由列表中指定的一个地址作为当前的下一路由,由于IP地址为4字节大小(IPV4),所以这个参数总是4字节的倍数;例如,4代表路由表中的第一个IP地址,8代表第二个IP地址,依次类推。这在伪造部分源路由表使得报文看起来相当的有用。在进行欺骗和源路由时,这个功能有助于屏蔽你的位置,但也不一定能接收到响应报文,因为响应报文将经过由伪造的IP地址反路由回来。
-l 该选项切换nc的监听模式。此选项必须与-p选项一起使用以告诉nc绑定某个指定的TCP端口并等待到来的连接。若换成-u选项,则应使用UDP端口而非TCP端口。
-L 该选项在Windows版本中有用,当一个连接被关闭后,使用相同的命令行选项进行重启监听模式,即使此时初始的连接已经结束,nc也能在不需要用户干涉的情况下接收后面新的连接。与-l一样,必须与-p同时使用。
-n 该选项告诉我们nc不做任何主机名查找的工作。
-0对数据执行一次十六进制转储(hex dump )并将其存储在hexfile中。命令nc-o hexfile将把双向通信的数据记录下来,在每行的开始处会有一个“”用来分别指示是进入数据还是外出数据。如果只想得到对进入数据的十六进制转储,可以使用 nc -ohexfile命令。
-p 让用户指定一个nc应使用的本地端口号。当通过-l或-L选项来使用监听模式的时候,这个参数是必需的。如果没有为外出连接指定这个参数,则与大多数其他TCP或UDP客户程序的做法一样,nc将使用系统分配给他的任何端口。
-r 该参数使nc可以随机选择本地和远程端口。当使用nc在系统中范围很大的一批端口上获取信息时,要想混合源端口和目标端口的顺序看起来不怎么象端口扫描,这个选项是很有用的。当这个选项与-i选项和一个足够大的间隔结合使用的时候,在不被注意的端口扫描成功几率能得到很大提升。
-s 指定nc建立连接时所使用的IP地址,该选项允许黑客做一些工作,它允许黑客隐藏他们的IP地址或假冒他人的IP地址,但是要得到路由到他们所欺骗的地址的任何信息,都需要使用-g源路由选项。其次,当处于监听模式时,大多数情况下都可以与一个已经监听
代码片段和文件信息
// portions Copyright (C) 1994 Nathaniel W. Mishkin
// code taken from rlogind.exe
#include
#include
#include se.h>
#ifdef GAPING_SECURITY_HOLE
#define BUFFER_SIZE 200
extern char * pr00gie;
void holler(char * str char * p1 char * p2 char * p3 char * p4 char * p5 char * p6);
char smbuff[20];
//
// Structure used to describe each session
//
typedef struct {
//
// These fields are filled in at session creation time
//
HANDLE ReadPipeHandle; // Handle to shell stdout pipe
HANDLE WritePipeHandle; // Handle to shell stdin pipe
HANDLE ProcessHandle; // Handle to shell process
//
//
// These fields are filled in at session connect time and are only
// valid when the session is connected
//
SOCKET ClientSocket;
HANDLE ReadShellThreadHandle; // Handle to session shell-read thread
HANDLE WriteShellThreadHandle; // Handle to session shell-read thread
} SESSION_DATA *PSESSION_DATA;
//
// Private prototypes
//
static HANDLE
StartShell(
HANDLE StdinPipeHandle
HANDLE StdoutPipeHandle
);
static VOID
SessionReadShellThreadFn(
LPVOID Parameter
);
static VOID
SessionWriteShellThreadFn(
LPVOID Parameter
);
// **********************************************************************
//
// CreateSession
//
// Creates a new session. Involves creating the shell process and establishing
// pipes for communication with it.
//
// Returns a handle to the session or NULL on failure.
//
static PSESSION_DATA
CreateSession(
VOID
)
{
PSESSION_DATA Session = NULL;
BOOL Result;
SECURITY_ATTRIBUTES SecurityAttributes;
HANDLE ShellStdinPipe = NULL;
HANDLE ShellStdoutPipe = NULL;
//
// Allocate space for the session data
//
Session = (PSESSION_DATA) malloc(sizeof(SESSION_DATA));
if (Session == NULL) {
return(NULL);
}
//
// Reset fields in preparation for failure
//
Session->ReadPipeHandle = NULL;
Session->WritePipeHandle = NULL;
//
// Create the I/O pipes for the shell
//
SecurityAttributes.nLength = sizeof(SecurityAttributes);
SecurityAttributes.lpSecurityDescriptor = NULL; // Use default ACL
SecurityAttributes.bInheritHandle = TRUE; // Shell will inherit handles
Result = CreatePipe(&Session->ReadPipeHandle &ShellStdoutPipe
&SecurityAttributes 0);
if (!Result) {
holler(“Failed to create shell stdout pipe error = %s“
itoa(GetLastError() smbuff 10) NULL NULL NULL NULL NULL);
goto Failure;
}
Result = CreatePipe(&ShellStdinPipe &Session->WritePipeHandle
&SecurityAttributes 0);
if (!Result) {
holler(“Failed to create shell stdin pipe error = %s“
itoa(GetLastError() smbuff 10) NULL NULL NULL NULL NULL);
goto Failure;
}
//
// Start the shell
//
Sessi
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 12039 1997-11-28 14:48 NC\doexec.c
文件 7283 1996-07-09 16:01 NC\generic.h
文件 22784 1996-11-06 22:40 NC\getopt.c
文件 4765 1994-11-03 19:07 NC\getopt.h
文件 61780 1998-02-06 15:50 NC\hobbit.txt
文件 544 1997-11-28 14:36 NC\makefile
文件 59392 1998-01-03 14:37 NC\nc.exe
文件 69081 1998-01-04 15:17 NC\NETCAT.C
文件 6771 1998-02-06 17:53 NC\readme.txt
..AD... 0 2011-08-21 12:13 NC
文件 9219 2012-05-12 16:41 使用手册.txt
----------- --------- ---------- ----- ----
253658 11
- 上一篇:SAP 采购退货总结
- 下一篇:单纯形法(代码)
评论
共有 条评论