如何用x-scan对指定IP进行端口扫描

如何用x-scan对指定IP进行端口扫描,第1张

xsniff <选项>

<选项>含义如下:

-tcp : 输出TCP数据报

-udp : 输出UDP数据报

-icmp : 输出ICMP数据报

-pass : 过滤密码信息

-hide : 后台运行

-host : 解析主机名

-addr <IP地址> : 过滤IP地址

-port <端口> : 过滤端口

-log <文件名> : 将输出保存到文件

-asc : 以ASCII形式输出

-hex : 以16进制形式输出

示例:xsniffexe -pass -hide -log passlog

xsniffexe -tcp -udp -asc -addr 19216811

您好,在命令提示符中输入netstat -an可以扫描某一计算机开放的所有端口,具体步骤如下:

工具/材料:电脑

1、打开电脑,右键单击左下角开始,然后点击运行。

2、在运行的输入框里面输入cmd,然后点击确定。

3、在d出的cmdexe中输入netstat -an,然后敲击回车,这样就可以看到这个计算机所有开放的端口了。

端口扫描:端口对应网络服务及应用端程序

服务端程序的漏洞通过端口攻入

发现开放的端口

更具体的攻击面

UDP端口扫描:

如果收到ICMP端口不可达,表示端口关闭

如果没有收到回包,则证明端口是开放的

和三层扫描IP刚好相反

Scapy端口开发扫描

命令:sr1(IP(dst="19216845129")/UDP(dport=53),timeout=1,verbose=1)

nmap -sU 19216845129

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虚拟机:19216845128

Linux虚拟机:19216845129

windows虚拟机:19216845132

发送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  19216845129 -p 80,21,110,443 #扫描固定的端口

nmap -sS 19216845129 -p 1-65535 --open  #扫描该IP地址下1-65535端口扫描,并只显示开放的端口

nmap -sS 19216845129 -p --open  #参数--open表示只显示开放的端口

nmap -sS -iL iplisttxt -p 80

由抓包可知,nmap默认使用-sS扫描,发送SYN数据包,即nmap=nmap  -sS

hping3做隐蔽端口扫描:

hping3 19216845129 --scan 80 -S  #参数--scan后面接单个端口或者多个端口-S表示进行SYN扫描

hping3 19216845129 --scan 80,21,25,443 -S

hping3 19216845129 --scan 1-65535 -S

由抓包可得:

hping3 -c 100  -S  --spoof 19216845200 -p ++1 19216845129

参数-c表示发送数据包的数量

参数-S表示发送SYN数据包

--spoof:伪造源地址,后面接伪造的地址,

参数-p表示扫描的端口,++1表示每次端口号加1,那么就是发送SYN从端口1到端口100

最后面跟的是目标IP

通过抓包可以得知地址已伪造,但对于linux系统(19216845129)来说,它收到了19216845200的SYN数据包,那么就会给19216845200回复SYN+ACK数据包,但该地址却是kali伪造的地址,那么要查看目标系统哪些端口开放,必须登陆地址为kali伪造的地址即(19216845200)进行抓包

hping3和nmap扫描端口的区别:1,hping3结果清晰明了

  2,nmap首先对IP进行DNS反向解析,如果没成功,那么便会对其端口发送数据包,默认发送SYN数据包

hping3直接向目标系统的端口发送SYN数据包,并不进行DNS反向解析

全连接端口扫描:如果单独发送SYN数据包被被过滤,那么就使用全连接端口扫描,与目标建立三次握手连接,结果是最准确的,但容易被入侵检测系统发现

response=sr1(IP(dst="19216845129")/TCP(dport=80,flags="S"))

reply=sr1(IP(dst="19216845129")/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 19216845129  #参数-p表示执行TCP端口扫描

dmitry -p 19216845129 -o output  #参数-o表示把结果保存到一个文本文档中去

使用nc进行全连接端口扫描:

nc -nv -w 1 -z 19216845129 1-100:      1-100表示扫描1-100号端口

参数-n表示不对Ip地址进行域名解析,只把其当IP来处理

参数-v表示显示详细信息

参数-w表示超时时间

-z表示打开用于扫描的模式

class PingExam

{

public static void Main()

{

Ping ping = new Ping();

string ip = "192168143"; // 目标ip

int[] ports = { 20, 21, 25, 80, 8080, 2588 }; // 需要扫描的端口

scanPort(IPAddressParse(ip), ports);

}

private static void scanPort(IPAddress address, int[] ports)

{

try {

int count = portsLength;

AutoResetEvent[] arEvents = new AutoResetEvent[count]; // 同步对象

for (int i = 0; i < count; i++) {

arEvents[i] = new AutoResetEvent(false); // 同步对象, 初始未触发

Socket socket = new Socket(AddressFamilyInterNetwork, SocketTypeStream, ProtocolTypeTcp);

socketBind(new IPEndPoint(IPAddressAny, 0));

socketBeginConnect(new IPEndPoint(address, ports[i]),

callback,

new ArrayList() { socket, ports[i], arEvents[i]} // 传递3个参数: 当前socket, 端口, 同步对象

);

}

WaitHandleWaitAll(arEvents); // 等待所有扫描工作完成

}

catch (Exception ex) {

ConsoleWriteLine(exMessage);

}

}

private static void callback(IAsyncResult ar) // 扫描完成后的回调方法

{

ArrayList list = (ArrayList)arAsyncState; // 获取传递的参数

Socket socket = (Socket)list[0];

int port = (int)list[1];

AutoResetEvent arevent = (AutoResetEvent)list[2];

if (arIsCompleted && socketConnected) {

ConsoleWriteLine("port: {0} open", port); // 检查 connected属性, 如果为true 则表示是开放的

}

else {

ConsoleWriteLine("port: {0} closed", port);

}

try {

socketShutdown(SocketShutdownBoth);

socketClose();

}

catch {

}

areventSet(); // 完成后触发

}

}

有很多这种软件。你可以在百度中搜‘端口扫描工具’

简单的工具你一看就会。比较强大的是nmap软件,不过这个比较难用,DOS的(也有做了图形化的)。

另外告诉你,扫描也是要对网络有一定了解的。要是网络中有硬件防火墙。就算你知道IP也是扫描不到的。

附:要是你只是简单的测试网络:你可以在CMD中使用telnet命令。只能用于TCP端口。

命令格式:

telnet [ip] [端口号]

列子:

telnet 19216811 80 //检测19216811设备的80(>

以上就是关于如何用x-scan对指定IP进行端口扫描全部的内容,包括:如何用x-scan对指定IP进行端口扫描、如何查找电脑上的端口扫描器、渗透测试之端口扫描等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9708011.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-01
下一篇2023-05-01

发表评论

登录后才能评论

评论列表(0条)

    保存