1、 NMAP概述
nmap是一个网络探测和安全扫描程序,系统管理者和个人可以使用这个软件扫描大型的
网络,获取那台主机正在运行以及提供什么服务等信息。nmap支持很多扫描技术,例
如:UDP、TCPconnect()、TCP SYN(半开扫描)、ftp代理(bounce攻击)、反向标志、ICMP、
FIN、ACK扫描、圣诞树(Xmas Tree)、SYN扫描和null扫描。还可以探测操作系统类型。
1.2 NMAP端口状态解析
端口扫描是Nmap最基本最核心的功能,用于确定目标主机的TCP/UDP端口的开放情况。
open :应用程序在该端口接收TCP连接或者UDP报文。
closed:关闭的端口对于nmap也是可访问的,它接收nmap探测报文并作出响应。但没有应用程
序在其上监听。
filtered :由于包过滤阻止探测报文到达端口,nmap无法确定该端口是否开放。过滤可能来自专
业的防火墙设备,路由规则或者主机上的软件防火墙。
unfiltered:未被过滤状态意味着端口可访问,但是nmap无法确定它是开放还是关闭。只有用于
映射防火墙规则集的ACK扫描才会把端口分类到这个状态。
open | filtered:无法确定端口是开放还是被过滤,开放的端口不响应就是一个例子。没有响应也
可能意味着报文过滤器丢弃了探测报文或者它引发的任何反应。UDP,IP协议,FIN,Null等扫描会引
起。
closed | filtered:(关闭或者被过滤的)︰无法确定端口是关闭的还是被过滤的。
1.3 NMAP语法及示例
语法: nmap [Scan Type(s)][Options]e
例1∶使用nmap扫描一台服务器
默认情况下,Nmap 会扫描1000个最有可能开放的TCP端口。

例2:扫描一台机器,查看它打开的端口及详细信息。

例3: 扫描一个范围:端口1-65535

注:生产环境下,我们只需要开启正在提供服务的端口,其他端口都关闭。
关闭不需要开的服务有两种方法:
情景1∶你认识这个服务,直接关服务
情景2∶不认识这个服务,查看哪个进程使用了这个端口并找出进程的路径,然后 kill进程,删
除文件,接下来以22端口为例,操作思路如下:

注: 如果没有看到此命令的具体执行路径,说明此木马进程可以在 bash终端下直接执行,通过
which和rpm -qf 来查看命令的来源,如下:


参数说明:
-O:显示出操作系统的类型。每一种操作系统都有一个指纹。
-sS:半开扫描(half-open)
TCP同步扫描(TCP SYN):因为不必全部打开一个TCP 连接,所以这项技术通常称为半开扫
描(half-open)。你可以发出一个TCP同步包(SYN),然后等待回应。如果对方返回SYN[ACK(响应)
包就表示目标端口正在监听;如果返回RST 数据包,就表示目标端口没有监听程序;如果收到一个
SYN|ACK包,源主机就会马上发出一个RST(复位)数据包断开和目标主机的连接,这实际上由我们
的操作系统内核自动完成的。

例5:扫描一个网段中所有机器是什么类型的操作系统。
nmap -sS -O 192.168.1.0/24
例6:查找一些有特点的IP地址中,开启80端口的服务器。

例7︰如何更隐藏的去扫描,频繁扫描会被屏蔽或者锁定IP地址。
--randomize-hosts # 随机扫描,对目标主机的顺序随机划分
--scan-delay #延时扫描,单位秒,调整探针之间的延迟
nmap -v --randomize-hosts -p 80 192.168.40.1-130

nmap -v --scan-delay 3000ms -p 80 192.168.40.1-130
nmap -v --randomize-hosts --scan-delay 3000ms -p 80 192.168.40.1-130


例8:使用通配符指定IP地址
nmap -v --randomize-hosts --scan-delay 3000ms -p 80 192.168.40.*

1.4图形界面zenmap的使用
新版kali安装zenmap 由于本人安装了4小时 依赖问题解决不了,放弃安装
使用windows做演示

参数解释:
-A 完全扫描,对操作系统和软件版本号进行检测,并对目标进行traceroute路由探测,
-О 参数仅识别目标操作系统,并不做软件版本检测和路由探测。
-T4 指定扫描过程使用的时序(Timing),总有6个级别(O-5),级别越高,扫描速度越快,但
也容易被防火墙或IDS检测并屏蔽掉,在网络通讯状况良好的情况推荐使用T4。
-v 表示显示冗余(verbosity)信息,在扫描过程中显示扫描的细节,从而让用户了解当前的扫
描状态。
1.5 zenmap脚本介绍

第一种: Intense scane
nmap -T4 -A -v
一般来说,Intense scan可以满足一般扫描
-T4 加快执行速度
-A 操作系统及版本探测
-v 显示详细的输出
第二种: Intense scan plus UDP
nmap -ss -sU -T4 -A -v
即UDP扫描
-sS TCP SYN 扫描
-su UDP 扫描
第三种: Intense scan,all TCP ports
nmap -p 1-65535 -T4 -A -v
扫描所有TCР端口,范围在1-65535,试图扫描所有端口的开放情况,速度比较慢。
-p 指定端口扫描范围
第四种: Intense scan,no pinge
nmap -T4 -A -v -Pn
非ping扫描
-Pn 非ping 扫描
第五种: Ping scane
nmap -sn
Ping 扫描 优点∶速度快。
缺点:容易被防火墙屏蔽,导致无扫描结果
-sn ping 扫描
第六种: Quick scane
nmap -T4-F
快速的扫描
-F 快速模式
第七种:Quick scan pluse
nmap -sV -T4 -O -F --version-light
快速扫描加强模式
-sV 探测端口及版本服务信息。
-О 开启OS检测
--version-light 设定侦测等级为2
第八种:Quick traceroute
nmap -sn --traceroute
路由跟踪
-sn Ping 扫描,关闭端口扫描
-traceroute 显示本机到目标的路由跃点。
第九种: Regular scane
常规扫描
第十种:Slow comprehensive scane
nmap -sS -sU -T4 -A -v -PE -PP -PS80,443,-PA3389,PU40125 -PY -g 53 --script all 慢速
全面扫描。
1. DNMAР集群简介
dnmap是一个用python写的进行分布式扫描的nmap扫描框架,我们可以用dnmap来通过
多个台机器发起一个大规模的扫描,dnmap采用C/S结构,执行大量扫描任务时非常便捷,扫描结
果可以统一管理。
实验场景: 使用4台位于不同区域的kali服务器对A类网段时行扫描。
用户在服务器端设定好nmap执行的命令,dnmap 会自动的分配给客户端进行扫描,并将扫
描结果提交给服务器。
dnmap有两个可执行文件,分别是dnmap_client和dnmap_server。在进行一个分布式
nmap扫描之前,我们可以用dnmap_server 来生成一个dnmap的服务端,然后在其他机器
dnmap_client进行连接。然后就能进行分布式的nmap扫描了。
这里我们可以使用Kali Linux,自带有dnmap。
2、 生成证书文件
因为dnmap自带的用于TLS连接的pem文件证书太过久远,必须要重新生成一个pem证书客
户端和服务器才能正常连接。
─(root㉿root)-[~/桌面]
└─# openssl req -newkey rsa:2048 -new -nodes -x509 -days 3650 -keyout key.pem -out server.pem

以上信息可以按照要求填写也可以随意填写。
查看新生成的证书server.pem

将新生成的私钥追加到server.pem证书后面
cat key.pem >> server.pem

3、创建NMAP命令文件
这一步很简单我们只需要将扫描的命令添加到一个文件中即可,每行一条命令。客户端启动后
会主动找服务端要任务。当客户端执行完后,会再找服务端要任务。
┌──(root㉿root)-[~/桌面]
└─# vim nmap.txt
插入以下内容:
nmap 101.200.128.30-31
nmap 101.200.128.32-33
nmap 101.200.128.34-35
nmap 101.200.128.36-37
nmap 101.200.128.38-40

4、启动DNMAP集群
1、使用dnmap_server启动dnmap的服务端选项:
-f,跟一个待会要执行的nmap命令的文件
-P 跟一个用于TLS 连接的pem 文件}默认是使用随服务器提供的server.pem
──(root㉿root)-[~/桌面]
└─# /usr/bin/dnmap_server -f nmap.txt -P server.pem
NESSUS安装: http://t.csdn.cn/UYDz4
开启windows系统,IP是: 192.168.2.7
登录: https://192.168.2.175:8834 用户名:root密码:root






具体用法可以百度



我正在学习如何使用Nokogiri,根据这段代码我遇到了一些问题:require'rubygems'require'mechanize'post_agent=WWW::Mechanize.newpost_page=post_agent.get('http://www.vbulletin.org/forum/showthread.php?t=230708')puts"\nabsolutepathwithtbodygivesnil"putspost_page.parser.xpath('/html/body/div/div/div/div/div/table/tbody/tr/td/div
我有一个Ruby程序,它使用rubyzip压缩XML文件的目录树。gem。我的问题是文件开始变得很重,我想提高压缩级别,因为压缩时间不是问题。我在rubyzipdocumentation中找不到一种为创建的ZIP文件指定压缩级别的方法。有人知道如何更改此设置吗?是否有另一个允许指定压缩级别的Ruby库? 最佳答案 这是我通过查看rubyzip内部创建的代码。level=Zlib::BEST_COMPRESSIONZip::ZipOutputStream.open(zip_file)do|zip|Dir.glob("**/*")d
类classAprivatedeffooputs:fooendpublicdefbarputs:barendprivatedefzimputs:zimendprotecteddefdibputs:dibendendA的实例a=A.new测试a.foorescueputs:faila.barrescueputs:faila.zimrescueputs:faila.dibrescueputs:faila.gazrescueputs:fail测试输出failbarfailfailfail.发送测试[:foo,:bar,:zim,:dib,:gaz].each{|m|a.send(m)resc
很好奇,就使用rubyonrails自动化单元测试而言,你们正在做什么?您是否创建了一个脚本来在cron中运行rake作业并将结果邮寄给您?git中的预提交Hook?只是手动调用?我完全理解测试,但想知道在错误发生之前捕获错误的最佳实践是什么。让我们理所当然地认为测试本身是完美无缺的,并且可以正常工作。下一步是什么以确保他们在正确的时间将可能有害的结果传达给您? 最佳答案 不确定您到底想听什么,但是有几个级别的自动代码库控制:在处理某项功能时,您可以使用类似autotest的内容获得关于哪些有效,哪些无效的即时反馈。要确保您的提
假设我做了一个模块如下:m=Module.newdoclassCendend三个问题:除了对m的引用之外,还有什么方法可以访问C和m中的其他内容?我可以在创建匿名模块后为其命名吗(就像我输入“module...”一样)?如何在使用完匿名模块后将其删除,使其定义的常量不再存在? 最佳答案 三个答案:是的,使用ObjectSpace.此代码使c引用你的类(class)C不引用m:c=nilObjectSpace.each_object{|obj|c=objif(Class===objandobj.name=~/::C$/)}当然这取决于
我正在尝试使用ruby和Savon来使用网络服务。测试服务为http://www.webservicex.net/WS/WSDetails.aspx?WSID=9&CATID=2require'rubygems'require'savon'client=Savon::Client.new"http://www.webservicex.net/stockquote.asmx?WSDL"client.get_quotedo|soap|soap.body={:symbol=>"AAPL"}end返回SOAP异常。检查soap信封,在我看来soap请求没有正确的命名空间。任何人都可以建议我
关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭4年前。Improvethisquestion我想在固定时间创建一系列低音和高音调的哔哔声。例如:在150毫秒时发出高音调的蜂鸣声在151毫秒时发出低音调的蜂鸣声200毫秒时发出低音调的蜂鸣声250毫秒的高音调蜂鸣声有没有办法在Ruby或Python中做到这一点?我真的不在乎输出编码是什么(.wav、.mp3、.ogg等等),但我确实想创建一个输出文件。
我在我的项目目录中完成了compasscreate.和compassinitrails。几个问题:我已将我的.sass文件放在public/stylesheets中。这是放置它们的正确位置吗?当我运行compasswatch时,它不会自动编译这些.sass文件。我必须手动指定文件:compasswatchpublic/stylesheets/myfile.sass等。如何让它自动运行?文件ie.css、print.css和screen.css已放在stylesheets/compiled。如何在编译后不让它们重新出现的情况下删除它们?我自己编译的.sass文件编译成compiled/t
我想将html转换为纯文本。不过,我不想只删除标签,我想智能地保留尽可能多的格式。为插入换行符标签,检测段落并格式化它们等。输入非常简单,通常是格式良好的html(不是整个文档,只是一堆内容,通常没有anchor或图像)。我可以将几个正则表达式放在一起,让我达到80%,但我认为可能有一些现有的解决方案更智能。 最佳答案 首先,不要尝试为此使用正则表达式。很有可能你会想出一个脆弱/脆弱的解决方案,它会随着HTML的变化而崩溃,或者很难管理和维护。您可以使用Nokogiri快速解析HTML并提取文本:require'nokogiri'h
我想为Heroku构建一个Rails3应用程序。他们使用Postgres作为他们的数据库,所以我通过MacPorts安装了postgres9.0。现在我需要一个postgresgem并且共识是出于性能原因你想要pggem。但是我对我得到的错误感到非常困惑当我尝试在rvm下通过geminstall安装pg时。我已经非常明确地指定了所有postgres目录的位置可以找到但仍然无法完成安装:$envARCHFLAGS='-archx86_64'geminstallpg--\--with-pg-config=/opt/local/var/db/postgresql90/defaultdb/po