linux之NAMP

linux之NAMP

Nmap(Network Mapper)是一个开源的网络扫描和安全审计工具。它被设计用来快速地扫描大型网络,尽管它也可以对单个主机进行有效的扫描。Nmap利用原始IP数据包以多种方式探测目标网络上的主机、服务(应用程序名称和版本)、操作系统版本、使用的过滤器/防火墙类型、以及许多其他属性。

主要特性

  • 主机发现:确定网络上哪些主机是活动的。
  • 端口扫描:确定目标主机上哪些端口是开放的。
  • 服务和版本检测:尝试确定连接到开放端口的应用程序和服务的名称及版本。
  • 操作系统检测:通过分析响应数据包来推断目标主机运行的操作系统类型。
  • 脚本扫描:使用Nmap Scripting Engine(NSE)执行对目标的进一步探测。NSE允许用户编写(或下载)脚本来执行更广泛的检查,这些检查可能涉及到漏洞探测、网络发现等。
  • 网络发现和拓扑图:生成网络的图形表示,显示网络中的设备如何相互连接。

namp安装

在Linux上安装Nmap

大多数Linux发行版都通过其包管理系统提供Nmap。

Debian/Ubuntu:

sudo apt-get update
sudo apt-get install nmap

CentOS/RHEL:

#CentOS/RHEL 7及以下版本:
sudo yum install nmap
#CentOS/RHEL 8及以上版本:
sudo dnf install nmap

Fedora:

sudo dnf install nmap

Arch Linux:

sudo pacman -S nmap

在Windows上安装Nmap

在Windows上,Nmap提供了一个图形用户界面版本称为Zenmap。可以从Nmap官方网站下载安装程序:

  • 访问Nmap官方下载页面。

  • 下载适用于Windows的Nmap安装程序(.exe文件)。

  • 双击下载的文件并遵循安装向导的指示完成安装。

在MacOS上安装Nmap
在MacOS上使用Homebrew来安装Nmap:

首先,打开终端。
如果没有安装Homebrew,可以通过以下命令安装:

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

使用Homebrew安装Nmap:

brew install nmap

使用源代码安装

如果操作系统没有预打包的Nmap,或者想要最新版本的Nmap,可以从源代码编译安装。这通常涉及到下载最新的源代码压缩包,解压缩,编译,然后安装:

wget https://nmap.org/dist/nmap-<version>.tar.bz2
tar jxvf nmap-<version>.tar.bz2
cd nmap-<version>
./configure
make
sudo make install

请将替换为希望下载的Nmap版本号。

以上是Nmap的基本安装方法。

在大多数情况下,使用包管理器或官方提供的安装程序是最简单、最快捷的安装方式。

基本使用示例

基本扫描:扫描目标主机(例如192.168.1.1)的1000个最常用端口。

nmap 192.168.1.1
#Ping扫描(不扫描端口),确定活动主机
nmap -sn 192.168.1.0/24

特定端口扫描:扫描目标主机的特定端口(例如22,80,443)。

nmap -p 22,80,443 192.168.1.1

操作系统检测:

nmap -O 192.168.1.1

服务版本检测:

nmap -sV 192.168.1.1

使用NSE脚本:

nmap --script=<脚本名> 192.168.1.1

网络发现和拓扑图:

#生成网络拓扑图(需要Nmap的图形用户界面Zenmap):
zenmap

[!TIP]

Zenamp

Zenmap是Nmap的官方图形用户界面(GUI),它使得Nmap的使用变得更加直观和用户友好。Zenmap不仅提供了一个易于使用的图形界面来执行Nmap扫描,还包括了高级功能,如保存扫描结果的能力、比较扫描结果、和自动化复杂的扫描任务。

Zenmap的安装

  • 在Windows上安装Zenmap
  • 访问Nmap官方下载页面。
  • 下载适用于Windows的Nmap安装程序(包括Zenmap)。
  • 双击下载的安装程序文件,并遵循安装向导的指示完成安装。

在Linux上安装Zenmap
在一些Linux发行版中,Zenmap可能不包括在默认的仓库中。对于那些包含Zenmap的发行版,使用包管理器进行安装。

Debian/Ubuntu:

sudo apt-get update
sudo apt-get install zenmap

Fedora:

sudo dnf install nmap-frontend

请注意,随着时间的推移,一些Linux发行版可能会从其仓库中移除Zenmap,或者需要添加额外的仓库来安装Zenmap。

在MacOS上安装Zenmap
在MacOS上,通过下载Nmap官方提供的.pkg安装文件来安装Zenmap。

  • 访问Nmap官方下载页面。
  • 下载适用于MacOS的.pkg文件。
  • 双击.pkg文件并遵循安装向导的指示完成安装。

Zenmap的基本用法

  • 打开Zenmap:安装完成后,启动Zenmap。
  • 选择目标:在“目标”框中输入扫描的IP地址、主机名或网络段。
  • 选择扫描类型:从“配置文件”下拉菜单中选择预设的扫描类型,如“快速扫描”、“全面扫描”等,或者自定义扫描命令。
  • 启动扫描:点击“扫描”按钮开始扫描过程。
  • 查看结果:扫描完成后,结果将显示在主界面。您可以查看开放的端口、运行的服务及其版本、操作系统猜测等信息。
  • 保存和比较结果:保存扫描结果以供将来参考,并且可以使用Zenmap比较不同时间点的扫描结果,以便发现网络变化。

NAMP奇淫巧技

利用NSE(Nmap Scripting Engine)进行扩展扫描

Nmap的脚本引擎(NSE)是其最强大的特性之一,能够执行各种网络安全任务,如漏洞检测、后门检测、和网络发现等。

#示例:使用NSE脚本扫描SMB漏洞
nmap --script smb-vuln* -p 445 <目标IP>

绕过防火墙和IDS/IPS

Nmap提供了多种技术来绕过网络中的防火墙和入侵检测系统。

#片段化扫描:通过将扫描包分成小片段,使得某些防火墙和IDS难以检测到扫描活动。
nmap -f <目标IP>
#使用Decoy伪装扫描:同时指定多个“诱饵”IP,使得防御者难以确定真正的扫描来源。
nmap -D RND:10 <目标IP>

操作系统和服务版本探测的高级用法

通过发送特定的TCP和UDP包到目标机器,并分析响应,Nmap可以推断操作系统版本和运行的服务。

#操作系统探测:
nmap -O --osscan-guess <目标IP>
#服务版本探测:
nmap -sV --version-intensity 9 <目标IP>

输出格式化

Nmap允许以多种格式输出扫描结果,便于报告或进一步分析。

#输出为XML格式:
nmap -oX output.xml <目标IP>
#输出所有扫描结果到一个文件(包括正常、XML、Grepable格式):
nmap -oA output <目标IP>

使用自定义扫描方式

Nmap提供了灵活的扫描选项,允许用户根据需要自定义扫描类型。

ACK扫描(用于映射防火墙规则):

nmap -sA <目标IP>

UDP扫描(发现开放的UDP端口):

nmap -sU <目标IP>

NSE脚本

基本示例

--[[假设我们要编写一个脚本,用于检查目标服务器是否运行HTTP服务,并获取其标题(title)。
--[[
NSE脚本通常包含以下几个部分:
描述(description):脚本的简短描述。
作者(author):脚本作者的名字。
许可证(license):脚本的许可证类型。
类别(categories):脚本所属的类别(如"safe", "intrusive", "discovery", "vuln"等)。
依赖(dependencies):脚本运行所依赖的其他NSE脚本。
入口点(entry point):脚本的主要逻辑部分,通常是action函数。
--]]description = "catch http services"
author = "秋月霜风"
license = "MIT1.0"
categories = {"discovery", "safe"}-- @param host 目标主机
-- @param port 目标端口
function action(host, port)-- 使用Nmap的http库发起请求local http = require("http")local response = http.get(host, port)if response.status then-- 从响应中提取标题local title = response.body:match("<title>(.-)</title>")if title thenreturn ("发现标题: %s"):format(title)elsereturn ("未发现标题")endelsereturn ("无法连接到HTTP服务")end
end

DIY FUNNY NSE

description = [[
检测目标网站使用的Web框架。
识别一些流行的Web框架。
]]author = "秋月霜风"
license = "MIT1.0"
categories = {"discovery", "safe"}local http = require "http"
local stdnse = require "stdnse"
local string = require "string"-- Web框架指纹库
local frameworks = {{name = "Django", pattern = "csrftoken=", path = "/"},{name = "Ruby on Rails", pattern = "csrf-token", path = "/"},{name = "Express", pattern = "X-Powered-By: Express", path = "/"},{name = "Flask", pattern = "flask-session=", path = "/"}
}-- 主函数
function action(host, port)local detected_frameworks = {}for _, framework in ipairs(frameworks) dolocal response = http.get(host, port, framework.path)if response.status and response.body and string.find(response.body, framework.pattern) thentable.insert(detected_frameworks, framework.name)elseif response.header and response.header["X-Powered-By"] and string.find(response.header["X-Powered-By"], framework.pattern) thentable.insert(detected_frameworks, framework.name)endendif #detected_frameworks > 0 thenreturn true, stdnse.format_output(true, detected_frameworks)elsereturn false, "未能识别Web框架。"end
end

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/7149.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LLM应用:工作流workflow创建自定义模版使用

参考: https://www.coze.cn/ 本案例是在coze平台上操作的,也有其他工具支持工作流的创建例如dify;也例如图像生成的comfyui工作流工具 创建自定义模版 可以根据自己需求创建自己的工作流工具;本文案例是创建一个联网搜索的LLM应用: 创建工作流页面: https://www.coze.c…

X 推出 Stories 功能,由 Grok AI 生成新闻摘要

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

工厂模式+策略模式

输入实体 基类 import lombok.Data;Data public class PersonInputDto {private Integer id;private String name; }子类 Data AllArgsConstructor NoArgsConstructor public class ManPerson extends PersonInputDto {private String sex; }Data AllArgsConstructor NoArgs…

嵌入式学习day11

每日面试题 全局变量可不可以定义在可被多个.c文件包含的头文件中&#xff0c;为啥&#xff1f; 可以&#xff0c;在不同的C文件中各自用static声明的全局变量&#xff0c;变量名可能相同&#xff0c;但是各自C文件中的全局变量的作用域为该文件&#xff0c;所以互不干扰。 …

渗透 如何防御ARP欺骗,LLMNR-MDNS-NBNS等协议的作用

一. 如何防御ARP欺骗&#xff1f; 1.使用双向IP/MAC绑定&#xff1b; 2.使用静态ARP缓存表&#xff1b; 3.使用ARP服务器&#xff0c;通过服务器来查找ARP转换表来响应其他机器的广播&#xff1b; 4.使用ARP欺骗防护软件&#xff1b; 5.在网关设备上部署防ARP欺骗攻击功能…

Python自动化测试【selenium面试题】

一、selenium中如何判断元素是否存在&#xff1f; expected_conditions模块提供了16种判断方法&#xff0c;以下方法是判断元素存在DOM中&#xff1a; presence_of_element_located """ An expectation for checking that an element is present on the DOM of…

分布式与一致性协议之ZAB协议(三)

ZAB协议 主节点崩溃了&#xff0c;怎么办&#xff1f; 众所周知&#xff0c;系统在运行中不可避免会出现各种各样的问题&#xff0c;比如进程崩溃了、服务器死机了&#xff0c;这些问题会导致很严重的后果&#xff0c;让系统没办法继续运行。在ZAB协议中&#xff0c;写请求是…

深度学习论文: DMAD: Dual Memory Bank for Real-World Anomaly Detection

深度学习论文: DMAD: Dual Memory Bank for Real-World Anomaly Detection DMAD: Dual Memory Bank for Real-World Anomaly Detection PDF: https://arxiv.org/pdf/2403.12362 PyTorch代码: https://github.com/shanglianlm0525/CvPytorch PyTorch代码: https://github.com/sh…

如何快速找到并处理jar依赖冲突问题

处理jar文件的依赖冲突一般有以下几种方法&#xff1a; 1、使用Maven的dependency:tree命令 Maven的dependency:tree命令可以帮助你快速找到项目的所有依赖的树状图。你可以在命令行运行以下命令&#xff1a; mvn dependency:tree你也可以使用-Dincludes参数来过滤某些特定的…

数智先锋 | 多场景数据治理案例,释放数据要素生产力

数据作为第五大生产要素&#xff0c;成为释放新质生产力的关键基础。 当前各个行业数字化建设如火如荼&#xff0c;全力挖掘数据价值以驱动行业高质量应用发展。数据治理成为数据要素价值发挥的重要基础和前提。 数据治理不单是技术问题&#xff0c;不是依赖工具就能解决的&a…

JVM之内存分配的详细解析

内存分配 两种方式 不分配内存的对象无法进行其他操作&#xff0c;JVM 为对象分配内存的过程&#xff1a;首先计算对象占用空间大小&#xff0c;接着在堆中划分一块内存给新对象 如果内存规整&#xff0c;使用指针碰撞&#xff08;Bump The Pointer&#xff09;。所有用过的内…

首屏优化-图片懒加载的代码实践(可直接运行)

实现图片懒加载时&#xff0c;可以使用 JavaScript 监听滚动事件&#xff0c;并根据图片是否进入可视区域来延迟加载图片。 方案一 <!DOCTYPE html> <html><head><style>.placeholder {width: 300px;height: 200px;background-color: #ccc;}.image {…

一文搞定文件的读写操作

文件的操作 C C语言中&#xff0c;文件的读取操作流程如下&#xff1a; 定义一个文件的指针将指针指向需要打开的文件&#xff0c;并且赋予该指针权限&#xff08;读&#xff0c;写&#xff0c;追加&#xff09;然后开始向文件写/读数据 打开文件 定义文件指针&#xff1a;F…

Android面试必考题1-15

目录 Service 和 主进程区别 一、性能优化 2.什么情况下会导致内存泄露 3.如何避免 OOM 异常

链式队列基本操作

链式队列的基本概念 链式队列是一种常见的数据结构&#xff0c;它使用链表作为其底层数据存储结构。链式队列的特点是动态的内存分配&#xff0c;可以有效地处理队列的入队和出队操作。下面&#xff0c;我将介绍链式队列的实现方法&#xff0c;并提供相应的C语言代码示例。 链…

C语言-设置控制台信息

Win_API Win_API是Windows应用程序接口&#xff08;Windows Application Programming Interface&#xff09;的缩写&#xff0c;它是一组函数、系统服务和程序接口&#xff0c;允许开发者在微软Windows操作系统上创建应用程序。Win32 API 是Windows API的一个主要部分&#xff…

Linux PXE高效批量网络装机

系统初始化 systemctl disable --now firewalld.service setenforce 0 vim /etc/selinux/config 安装软件 yum install -y tftp-server xinetd dhcp vsftpd syslinux 复制 vmlinuz initrd.img pxelinux.0 到 /var/lib/tftpboot/ 目录 [rootlocalhost ~]# cd /mnt/…

设计模式之业务代表模式

在编程江湖的风雨中漂泊多年&#xff0c;每当我遇到那些错综复杂的业务逻辑和系统交互&#xff0c;总有一个模式像一位忠诚的骑士&#xff0c;默默守护着我的代码城堡&#xff0c;那就是——业务代表模式&#xff08;Business Delegate Pattern&#xff09;。它不是最耀眼的明星…

C++ 如何进阶?

一、C基础&#xff08;3个月&#xff09; 1、面向对象的三大特性&#xff1a;封装、继承、多态 2、类的访问权限&#xff1a;private、protected、public 3、类的构造函数、析构函数、赋值函数、拷贝函数 4、移动构造函数与接贝构造函数对比 5、深接贝与浅贝的区别 6、空…

【C++语言】类和对象--默认成员函数 (中)

文章目录 前言类的六个默认成员函数&#xff1a;1. 构造函数概念特性做了什么&#xff1f;易错注意&#xff1a;显式定义和默认构造函数 2. 析构函数概念特征做了什么?注意事项&#xff1a; 3.拷贝构造函数概念特征做了什么&#xff1f;注意事项&#xff1a; 4.赋值运算符重载…