如何通过端口扫描进行网络攻击_检测到tcp端口扫描

hacker|
100

C++ TCP端口扫描

差不多就是这样的吧

#include stdio.h

#include winsock.h

#pragma comment(lib,"wsock32.lib")

int main(int argc, char **argv)

{

SOCKET sd_client;

u_short iPortStart, iPortEnd, port;

struct sockaddr_in addr_srv;

char *pszHost;

WSADATA wsaData;

WORD wVersionRequested;

int err;

switch(argc)

{

case 2:

iPortStart = 0;

iPortEnd = 65535;

pszHost =argv[1];

break;

case 3:

iPortStart = iPortEnd = atoi(argv[2]);

pszHost =argv[1];

break;

case 4:

iPortStart = atoi(argv[2]);

iPortEnd = atoi(argv[3]);

pszHost =argv[1];

break;

default:

printf("正确的命令行参数:\n");

printf("[IP] 扫描所有端口\n");

printf("[IP] [端口]:扫描单个端口\n");

printf("[IP] [端口1] [端口2]:扫描端口1到端口2\n");

return 1;

}

wVersionRequested = MAKEWORD( 1, 1 );

err = WSAStartup( wVersionRequested, wsaData );

if ( err != 0 )

{

printf("Error %d: Winsock not available\n", err);

return 1;

}

for(port=iPortStart; port=iPortEnd; port++)

{

sd_client = socket(PF_INET, SOCK_STREAM, 0);

if (sd_client == INVALID_SOCKET)

{

printf("no more socket resources\n");

return 1;

}

addr_srv.sin_family = PF_INET;

addr_srv.sin_addr.s_addr=inet_addr(pszHost);

addr_srv.sin_port = htons(port);

err = connect(sd_client, (struct sockaddr *) addr_srv, sizeof(addr_srv));

if (err == INVALID_SOCKET)

{

printf("不能连接此端口:%d\n", port);

closesocket(sd_client);

continue;

}

printf("扫描此端口成功:%d\n", port);

closesocket(sd_client);

}

WSACleanup();

return 0;

}

端口被扫描怎么办?

楼主你好,端口一天被扫描几十次很正常,楼主可以安装带隐身功能的防火墙,也可以关闭一些端口,方法如下

需要关闭的端口有 TCP 135、139、445、593、1025 端口和 UDP 135、137、138、445 端口

1打开开始菜单菜单- 控制面板-管理工具-本地IP策略-在本地计算机,在右边窗格的空白位置右击鼠标,弹出快捷菜单,选择创建 IP 安全策略,然后直到下一步的命名,在画面上把激活默认相应规则左边的钩去掉,点击完成

懒得多打字,接下来就复制一下赚分吧(*^__^*) 嘻嘻……

分割线——————————————空间里的

第一步,点击“开始”菜单/设置/控制面板/管理工具,双击打开“本地安全策略”,选中“IP 安全策略,在本地计算机”,在右边窗格的空白位置右击鼠标,弹出快捷菜单,选择“创建 IP 安全策略”(如右图),于是弹出一个向导。在向导中点击“下一步”按钮,为新的安全策略命名;再按“下一步”,则显示“安全通信请求”画面,在画面上把“激活默认相应规则”左边的钩去掉,点击“完成”按钮就创建了一个新的IP 安全策略。

第二步,右击该IP安全策略,在“属性”对话框中,把“使用添加向导”左边的钩去掉,然后单击“添加”按钮添加新的规则,随后弹出“新规则属性”对话框,在画面上点击“添加”按钮,弹出IP筛选器列表窗口;在列表中,首先把“使用添加向导”左边的钩去掉,然后再点击右边的“添加”按钮添加新的筛选器。

第三步,进入“筛选器属性”对话框,首先看到的是寻址,源地址选“任何 IP 地址”,目标地址选“我的 IP 地址”;点击“协议”选项卡,在“选择协议类型”的下拉列表中选择“TCP”,然后在“到此端口”下的文本框中输入“135”,点击“确定”按钮(如左图),这样就添加了一个屏蔽 TCP 135(RPC)端口的筛选器,它可以防止外界通过135端口连上你的电脑。

点击“确定”后回到筛选器列表的对话框,可以看到已经添加了一条策略,重复以上步骤继续添加 TCP 137、139、445、593 端口和 UDP 135、139、445 端口,为它们建立相应的筛选器。

重复以上步骤添加TCP 1025、2745、3127、6129、3389 端口的屏蔽策略,建立好上述端口的筛选器,最后点击“确定”按钮。

第四步,在“新规则属性”对话框中,选择“新 IP 筛选器列表”,然后点击其左边的圆圈上加一个点,表示已经激活,最后点击“筛选器操作”选项卡。在“筛选器操作”选项卡中,把“使用添加向导”左边的钩去掉,点击“添加”按钮,添加“阻止”操作(右图):在“新筛选器操作属性”的“安全措施”选项卡中,选择“阻止”,然后点击“确定”按钮。

第五步,进入“新规则属性”对话框,点击“新筛选器操作”,其左边的圆圈会加了一个点,表示已经激活,点击“关闭”按钮,关闭对话框;最后回到“新IP安全策略属性”对话框,在“新的IP筛选器列表”左边打钩,按“确定”按钮关闭对话框。在“本地安全策略”窗口,用鼠标右击新添加的 IP 安全策略,然后选择“指派”。

分割线——————————————

之后重启电脑就可以了

求采纳~

如果楼主觉得麻烦,那就装一道防火墙,国产的瑞星风云不错,推荐瑞星,智能化,操作简单,愿意花时间折腾就选毛豆~

tcp connect 远程端口扫描

你贴的代码不够全面,检查你设置IP处是否正确,以及你扫描的计算机是否开了防火墙.

补充:关掉防火墙,开防火墙的话,防火墙将阻止一些端口的TCPConnect

TCP扫描和UDP扫描以及它们的区别

主要是以下几点:

1. TCP是有连接的协议,而UDP是无连接的;

2. TCP扫描检测(ACK SYN)或者是(RST)报文,而UDP检测ICMP端口不可达报文;

3. TCP协议是可靠但低效的,可以有效进行端口扫描,范围广,效率低,可以应用于任何网络中;UDP协议时不可靠但高效的,范围小,效率高,一般应用于局域网内部,随着网络规模的增大,UDP端口扫描的结果准确度会越来越差,极端情况是,如果对Internet使用UDP端口扫描,所得到的结果一定不准确。

如何通过端口扫描发现目标主机的状态

端口扫描是指某些别有用心的人发送一组端口扫描消息,试图以此侵入某台计算机,并了解其提供的计算机网络服务类型(这些网络服务均与端口号相关)。端口扫描是计算机解密高手喜欢的一种方式。攻击者可以通过它了解到从哪里可探寻到攻击弱点。实质上,端口扫描包括向每个端口发送消息,一次只发送一个消息。接收到的回应类型表示是否在使用该端口并且可由此探寻弱点。

扫描器是一种自动检测远程或本地主机安全性弱点的程序,通过使用扫描器你可以不留痕迹的发现远程服务器的各种TCP端口的分配及提供的服务和它们的软件版本!这就能让我们间接的或直观的了解到远程主机所存在的安全问题。

一个端口就是一个潜在的通信通道,也就是一个入侵通道。对目标计算机进行端口扫描,能得到许多有用的信息。进行扫描的方法很多,可以是手工进行扫描,也可以用端口扫描软件进行扫描。

在手工进行扫描时,需要熟悉各种命令。对命令执行后的输出进行分析。用扫描软件进行扫描时,许多扫描器软件都有分析数据的功能。

通过端口扫描,可以得到许多有用的信息,从而发现系统的安全漏洞。

以上定义只针对网络通信端口,端口扫描在某些场合还可以定义为广泛的设备端口扫描,比如某些管理软件可以动态扫描各种计算机外设端口的开放状态,并进行管理和监控,这类系统常见的如USB管理系统、各种外设管理系统等。

2扫描工具编辑

扫描器是一种自动检测远程或本地主机安全性弱点的程序,通过使用扫描器你可以不留痕迹的发现远程服务器的各种TCP端口的分配及提供的服务和它们的软件版本!这就能让我们间接的或直观的了解到远程主机所存在的安全问题。

3工作原理编辑

扫描器通过选用远程TCP/IP不同的端口的服务,并记录目标给予的回答,通过这种方法,可以搜集到很多关于目标主机的各种有用的信息(比如:是否能用匿名登陆!是否有可写的FTP目录,是否能用TELNET,HTTPD是用ROOT还是nobady在跑.

4技术分类编辑

1、开放扫描;

2、半开放扫描;

3、隐蔽扫描。

5其它相关编辑

作用

扫描器并不是一个直接的攻击网络漏洞的程序,它仅仅能帮助我们发现目标机的某些内在的弱点。一个好的扫描器能对它得到的数据进行分析,帮助我们查找目标主机的漏洞。但它不会提供进入一个系统的详细步骤。

扫描器应该有三项功能:发现一个主机或网络的能力;一旦发现一台主机,有发现什么服务正运行在这台主机上的能力;通过测试这些服务,发现漏洞的能力。

编写扫描器程序必须要很多TCP/IP程序编写和C,Perl和或SHELL语言的知识。需要一些Socket编程的背景,一种在开发客户/服务应用程序的方法。开发一个扫描器是一个雄心勃勃的项目,通常能使程序员感到很满意。

端口号

代理服务器常用以下端口:

⑴. HTTP协议代理服务器常用端口号:80/8080/3128/8081/9080

⑵. SOCKS代理协议服务器常用端口号:1080

⑶. FTP(文件传输)协议代理服务器常用端口号:21

⑷. Telnet(远程登录)协议代理服务器常用端口:23

HTTP服务器,默认的端口号为80/tcp(木马Executor开放此端口);

HTTPS(securely transferring web pages)服务器,默认的端口号为443/tcp 443/udp;

Telnet(不安全的文本传送),默认端口号为23/tcp(木马Tiny Telnet Server所开放的端口);

FTP,默认的端口号为21/tcp(木马Doly Trojan、Fore、Invisible FTP、WebEx、WinCrash和Blade Runner所开放的端口);

TFTP(Trivial File Transfer Protocol),默认的端口号为69/udp;

SSH(安全登录)、SCP(文件传输)、端口重定向,默认的端口号为22/tcp;

SMTP Simple Mail Transfer Protocol (E-mail),默认的端口号为25/tcp(木马Antigen、Email Password Sender、Haebu Coceda、Shtrilitz Stealth、WinPC、WinSpy都开放这个端口);

POP3 Post Office Protocol (E-mail) ,默认的端口号为110/tcp;

WebLogic,默认的端口号为7001;

Webshpere应用程序,默认的端口号为9080;

webshpere管理工具,默认的端口号为9090;

JBOSS,默认的端口号为8080;

TOMCAT,默认的端口号为8080;

WIN2003远程登陆,默认的端口号为3389;

Symantec AV/Filter for MSE,默认端口号为 8081;

Oracle 数据库,默认的端口号为1521;

ORACLE EMCTL,默认的端口号为1158;

Oracle XDB(XML 数据库),默认的端口号为8080;

Oracle XDB FTP服务,默认的端口号为2100;

MS SQL*SERVER数据库server,默认的端口号为1433/tcp 1433/udp;

MS SQL*SERVER数据库monitor,默认的端口号为1434/tcp 1434/udp;

QQ,默认的端口号为1080/udp[1]

扫描分类

TCP connect() 扫描

这是最基本的TCP扫描。操作系统提供的connect()系统调用,用来与每一个感兴趣的目标计算机的端口进行连接。如果端口处于侦听状态,那么connect()就能成功。否则,这个端口是不能用的,即没有提供服务。这个技术的一个最大的优点是,你不需要任何权限。系统中的任何用户都有权利使用这个调用。另一个好处就是速度。如果对每个目标端口以线性的方式,使用单独的connect()调用,那么将会花费相当长的时间,你可以通过同时打开多个套接字,从而加速扫描。使用非阻塞I/O允许你设置一个低的时间用尽周期,同时观察多个套接字。但这种方法的缺点是很容易被发觉,并且被过滤掉。目标计算机的logs文件会显示一连串的连接和连接是出错的服务消息,并且能很快的使它关闭。

TCP SYN扫描

这种技术通常认为是“半开放”扫描,这是因为扫描程序不必要打开一个完全的TCP连接。扫描程序发送的是一个SYN数据包,好象准备打开一个实际的连接并等待反应一样(参考TCP的三次握手建立一个TCP连接的过程)。一个SYN|ACK的返回信息表示端口处于侦听状态。一个RST返回,表示端口没有处于侦听态。如果收到一个SYN|ACK,则扫描程序必须再发送一个RST信号,来关闭这个连接过程。这种扫描技术的优点在于一般不会在目标计算机上留下记录。但这种方法的一个缺点是,必须要有root权限才能建立自己的SYN数据包。

TCP FIN 扫描

有的时候有可能SYN扫描都不够秘密。一些防火墙和包过滤器会对一些指定的端口进行监视,有的程序能检测到这些扫描。相反,FIN数据包可能会没有任何麻烦的通过。这种扫描方法的思想是关闭的端口会用适当的RST来回复FIN数据包。另一方面,打开的端口会忽略对FIN数据包的回复。这种方法和系统的实现有一定的关系。有的系统不管端口是否打开,都回复RST,这样,这种扫描方法就不适用了。并且这种方法在区分Unix和NT时,是十分有用的。

IP段扫描

这种不能算是新方法,只是其它技术的变化。它并不是直接发送TCP探测数据包,是将数据包分成两个较小的IP段。这样就将一个TCP头分成好几个数据包,从而过滤器就很难探测到。但必须小心。一些程序在处理这些小数据包时会有些麻烦。

TCP 反向 ident扫描

ident 协议允许(rfc1413)看到通过TCP连接的任何进程的拥有者的用户名,即使这个连接不是由这个进程开始的。因此你能,举个例子,连接到http端口,然后用identd来发现服务器是否正在以root权限运行。这种方法只能在和目标端口建立了一个完整的TCP连接后才能看到。

FTP 返回攻击

FTP协议的一个有趣的特点是它支持代理(proxy)FTP连接。即入侵者可以从自己的计算机和目标主机的FTP server-PI(协议解释器)连接,建立一个控制通信连接。然后,请求这个server-PI激活一个有效的server-DTP(数据传输进程)来给Internet上任何地方发送文件。对于一个User-DTP,这是个推测,尽管RFC明确地定义请求一个服务器发送文件到另一个服务器是可以的。给许多服务器造成打击,用尽磁盘,企图越过防火墙”。

我们利用这个的目的是从一个代理的FTP服务器来扫描TCP端口。这样,你能在一个防火墙后面连接到一个FTP服务器,然后扫描端口(这些原来有可能被阻塞)。如果FTP服务器允许从一个目录读写数据,你就能发送任意的数据到发现的打开的端口。[2]

对于端口扫描,这个技术是使用PORT命令来表示被动的User DTP正在目标计算机上的某个端口侦听。然后入侵者试图用LIST命令列出当前目录,结果通过Server-DTP发送出去。如果目标主机正在某个端口侦听,传输就会成功(产生一个150或226的回应)。否则,会出现"425 Can't build data connection: Connection refused."。然后,使用另一个PORT命令,尝试目标计算机上的下一个端口。这种方法的优点很明显,难以跟踪,能穿过防火墙。主要缺点是速度很慢,有的FTP服务器最终能得到一些线索,关闭代理功能。

这种方法能成功的情景:

220 xxxx. FTP server (Version wu-2.4⑶ Wed Dec 14 ...) ready.

220 xxx.xxx. FTP server ready.

220 xx.Telcom. FTP server (Version wu-2.4⑶ Tue Jun 11 ...) ready.

220 lem FTP server (SunOS 4.1) ready.

220 xxx. FTP server (Version wu-2.4⑾ Sat Apr 27 ...) ready.

220 elios FTP server (SunOS 4.1) ready

这种方法不能成功的情景:

220 wcarchive. FTP server (Version DG-2.0.39 Sun May 4 ...) ready.

220 xxx.xx.xx. Version wu-2.4.2-academ[BETA-12]⑴ Fri Feb 7

220 ftp Microsoft FTP Service (Version 3.0).

220 xxx FTP server (Version wu-2.4.2-academ[BETA-11]⑴ Tue Sep 3 ...) ready.

220 xxx.FTP server (Version wu-2.4.2-academ[BETA-13]⑹ ...) ready.

不能扫描

这种方法与上面几种方法的不同之处在于使用的是UDP协议。由于这个协议很简单,所以扫描变得相对比较困难。这是由于打开的端口对扫描探测并不发送一个确认,关闭的端口也并不需要发送一个错误数据包。幸运的是,许多主机在你向一个未打开的UDP端口发送一个数据包时,会返回一个ICMP_PORT_UNREACH错误。这样你就能发现哪个端口是关闭的。UDP和ICMP错误都不保证能到达,因此这种扫描器必须还实现在一个包看上去是丢失的时候能重新传输。这种扫描方法是很慢的,因为RFC对ICMP错误消息的产生速率做了规定。同样,这种扫描方法需要具有root权限。

扫描

当非root用户不能直接读到端口不能到达错误时,Linux能间接地在它们到达时通知用户。比如,对一个关闭的端口的第二个write()调用将失败。在非阻塞的UDP套接字上调用recvfrom()时,如果ICMP出错还没有到达时回返回EAGAIN-重试。如果ICMP到达时,返回ECONNREFUSED-连接被拒绝。这就是用来查看端口是否打开的技术。

这并不是真正意义上的扫描。但有时通过ping,在判断在一个网络上主机是否开机时非常有用。[2]

端口扫描的目的

端口扫描的目的是扫描大范围的主机连接一系列的TCP端口,判断主机开放了哪些服务,这些开放的端口往往与一定的服务相对应,通过这些开放的端口,就能了解主机运行的服务,然后就可以进一步整理和分析这些服务可能存在的漏洞,随后采取针对性的攻击。

端口扫描是指某些别有用心的人发送一组端口扫描消息,试图以此侵入某台计算机,并了解其提供的计算机网络服务类型(这些网络服务均与端口号相关)。端口扫描是计算机解密高手喜欢的一种方式。攻击者可以通过它了解到从哪里可探寻到攻击弱点。实质上,端口扫描包括向每个端口发送消息,一次只发送一个消息。接收到的回应类型表示是否在使用该端口并且可由此探寻弱点。

端口扫描原理

端口扫描,顾名思义,就是逐个对一段端口或指定的端口进行扫描。通过扫描结果可以知道一台计算机上都提供了哪些服务,然后就可以通过所提供的这些服务的己知漏洞就可进行攻击。其原理是当一个主机向远端一个服务器的某一个端口提出建立一个连接的请求,如果对方有此项服务,就会应答,如果对方未安装此项服务时,即使你向相应的端口发出请求,对方仍无应答,利用这个原理。

0条大神的评论

发表评论