ATTCK视角下的信息收集:主机发现

目录

1、利用协议主动探测主机存活

利用ICMP发现主机

利用ARP发现主机

利用NetBIOS协议发现主机

利用TCP/UDP发现主机

利用DNS协议发现主机

利用PRC协议发现主机程序

2、被动主机存活检测

利用Browser主机探测存活主机

利用ip段探测主机存活

利用net命令探测主机存活

利用arp命令探测主机存活

利用HOSTS文件探测主机存活

利用DNS缓存探测主机存活

3、内网多网卡主机发现

前提条件:

分类:

利用方法:

防御方法:


1、利用协议主动探测主机存活

在进行内网主机发现时,使用系统自带的命令或者软件可以减少在目标磁盘落地二进制文件,减少EDR终端检测与响应(Endpoint Detection and Response)的检测和拦截

利用ICMP发现主机

ICMP探测的优势在于是系统自带的,内网中终端设备一般会将该协议进行放行,并且安全设备的默认策略不会对该协议进行安全分析

比如说我们可以使用下面命令探测一个C网段中的有哪些存活的主机:

利用ARP发现主机

在利用ARP发现主机时候,可以利用arp-scan工具来发现主机,该工具会遍历预设的ip段并且发送ARP请求,如果主机回复,则会返回主机ip和MAC地址。

注:如果使用ARP扫描,尽量不要指定过大的扫描范围,否则会引起大量告警,导致权限丢失

工具下载地址:

GitHub - QbsuranAlang/arp-scan-windows-: send arp request to whole specific LAN

利用NetBIOS协议发现主机

NetBIOS协议对各种IDS、IPS、杀毒软件的规避效果比其他协议更好,因为利用NetBIOS是正常的机器名解析查询应答的过程,推荐优先使用,它的功能就是为局域网提供网络以及其他特殊的功能

NBNS协议时TCP/IP上的NetBIOS(NetBT)协议簇的一部分,它在基于NetBIOS名称访问的网络上提供主机名和地址映射方法,

nbtscan是一个命令行工具,用于扫描本地或者远程TCP/IP网络上开放NetBIOS名称服务器。

如果主机存活,则会发送NBNS消息查询对方主机名

 注:如果使用nbtscan进行批量扫描,会发送大量的请求,导致安设备警告,并且该工具会落地,会增加被发现的可能

可以使用window自带的命令nbstart来指定ip标识信息

利用TCP/UDP发现主机

下面介绍一款用于TCP/UDP扫描的工具:portcheck.exe

Portcheck是一款小众的端口扫描工具,没有反病毒软件认为它是恶意软件甚至不被认为是黑客工具

下载地址:PortCheck 2.1 - TCP port check Windows 10 (portcheck-tool.com)

例如:扫描一个c网段内445端口的开放情况

利用DNS协议发现主机

我们如果得到了内部的NDS服务器地址,也就是NS记录,一般会通过DHCP自动分配

可以指定内网中的NDS服务器,然后以目标域名为规则逐个解析常见生产力系统域名的二级域名,这样就能够发现大量内部业务以及ip段

(1)Invoke-DNSDIscovery.ps1 可以用于识别内部网络/Windows域上的常用二级域名列表,此脚本可以用于在突破边界后进行内部DNS侦查

这个脚本中内置了大量的常见的二级域名,可以执行以下命令来将存在的域名保存到dns_short.csv中

Invoke-DnsDicovery -Namelist nasmes.txt -Path dns_short.csv

也可以使用-Namelist names.exe语法自定义二级域名

(2)gobusterdns是爆破二级域名工具gobuster的精简版,该巩固只用于子域名爆破支持自定义DNS服务器运行,内置精简字典,可以导入域名列表进行扫描

./gobusterdns_linux -d dm.org -r 192.168.159.1:53 -i -q

利用PRC协议发现主机程序

我们使用PRCSCAN以无须经过身份认证来访问目标的135端口并且获取目标的RPC map,然后通过解析PRC map 中的UUID判断目标主机可能存在的进行,还可以通过相关的进程判断远程主机可能开放的端口。

整个过程只需要向目标的135端口发送十几个流量包,在网络与主机层的特征和动静比较小,方便隐蔽渗透

具体的过程:

  1. 首先使用CS(Cobaltstrike)控制目标主机来加载PRCSCAN脚

  2. 执行rpcsan 192.168.159.0/24命令来使用PRCSCAN匿名探测远程C段的主机信息

PRCSCAN脚本下载地址:GitHub - JDArmy/RPCSCAN: RPC远程主机信息匿名扫描工具

2、被动主机存活检测

在发现主机后,如果使用扫描技术,在扫描的时候应该避免使用nmap等工具进行暴力扫描,因为这样会触发安全设备的告警,导致权限丢失。

最开始可以对入口点机器进行分析,得到已经存在的资产ip,从而确定更多的ip段

利用Browser主机探测存活主机

SMB协议提供了Browsing机制,客户端利用该机制来访问网络中的计算机列表

在SMB协议中,经常通过广播的方式来获取当前的网络资源,但是这会消耗大量的网络资源,

Browsing机制提供了一个计算机列表,每当一台计算机在网络中寻找另外一个计算机的时候,无需再使用广播的方式,而是直接从计算机列表中查找目标计算机,维护这个列表的计算机就成为“Browser”

Browser分为:本地Browser(地主Browser)和工作组与域的Browser(域主Browser)

  • 本地的Browser是由网络中的计算机自动推举出来的,,并非事先设定好的

  • 域的Browser也是自动推举出来的,但是主域控制器的权重高

可以使用nbtstat -A ipadder命令探测主机是不是主Browser

还可以借助工具使用Browsing来进行被动主机发现,比如,在Kail中可以执行python2 1.py eth0命令来进行被动主机发现

利用ip段探测主机存活

要利用IP段探测主机的存活状态,您可以使用以下方法之一:

  1. 使用Ping命令: 在命令提示符或终端中,您可以使用ping命令来扫描IP段中的主机。例如,如果您要扫描192.168.1.1到192.168.1.255之间的IP地址,您可以执行类似以下命令:

    for /L %i in (1,1,255) do @ping -n 1 -w 100 192.168.1.%i | find "Reply"

    这个命令会对该IP段中的每个IP地址执行一次ping操作,然后检查是否有回复。这样您就可以确定哪些主机是存活的。

  2. 使用Nmap工具: Nmap是一款功能强大的网络扫描工具,它可以用于扫描IP段中的主机,以确定哪些主机是存活的。例如,您可以执行以下命令来扫描192.168.1.0/24网段中的主机:

    nmap -sn 192.168.1.0/24

    这将发送ICMP Echo请求到该网段中的每个IP地址,并收集响应以确定主机的存活状态。

        

这些方法可以帮助您确定给定IP段中哪些主机是存活的。

请注意,对未经授权的网络进行扫描可能违反法律或网络使用政策,因此在执行这些操作之前,请确保您有权进行这样的扫描。

利用net命令探测主机存活

net use 命令用于 ipc$命名管道连接,查看计算机连接信息以及连接与断开计算机共享资源,它不带任何参数使用

执行net use命令可以列出已经建立连接的网络列表

执行net session命令可以看到其他主机连接当前主机的记录

利用arp命令探测主机存活

arp命令用于显示和修改arp缓存中的项目

arp -a命令用于记录出现的ip地址与物理地址的列表信息

利用HOSTS文件探测主机存活

很多的网络管理员为了减轻DNS服务器的压力,会将内网中的一些生产力系统域名和ip地址写到HOSTS文件中,因此从hosts中也可以看到那些主机是存活的

利用DNS缓存探测主机存活

Windows会将经DNS解析过的域名缓存下来。如果你控制了一台PC,可以查看一下它的DNS解析记录,发现一些内网中的生产力系统域名

系统中有大量的文件记录可以帮助我们发现更多的存活ip

可以输入 ipconfig /displaydns进行查看

3、内网多网卡主机发现

在内网渗透中,目标网络一般是分区域使用防火墙进行隔离的,可以通过Windows的一些接口,NetBIOS进行网卡信息的手机,用来定位多网卡主机。

在无须进行身份验证的情况下,可以获得远程主机是否有多个网卡和多个ip地址,以绕过限制,访问受保护的网络

在内网渗透中,发现内网多网卡主机可以通过以下方法实现:

前提条件:

  • 你需要在目标网络内,能够直接访问目标主机。

  • 目标主机上必须开启了相关的服务或接口,如IOXIDResolver、NBNS或PRC。

  • 开放135端口/UDP137端口

分类:

  • IOXIDResolver接口:通过调用IOXIDResolver接口,可以获取到远程主机的多个网卡信息。

  • NBNS:通过NetBIOS Name Service (NBNS) ,可以获取到远程主机的名称和IP地址。

  • PRC:通过Port Range Classification (PRC),可以确定任意主机可以访问的网络范围。

利用方法:

  1. 使用IOXIDResolver接口获取远程多网卡主机:使用相关的工具或编程语言,通过调用IOXIDResolver接口,获取远程主机的网卡信息。这些信息可以包括多个IP地址和对应的网卡信息。

  2. 使用NBNS获取远程多网卡主机:通过发送NetBIOS请求,获取远程主机的名称和IP地址。根据不同的NetBIOS应答,可以判断目标主机是否存在多个网卡。

    1. 使用nextnet通过UDP137端口枚举多网卡主机

    2.  nextnet 192.168.159.0/24

  3. 使用PRC获取任意主机可以访问的网络范围:通过分析目标主机的端口开放情况,结合已知的端口和服务信息,确定目标主机所在的网络范围。

防御方法:

  • 确保目标主机上的相关服务或接口已经关闭或限制访问。

  • 配置防火墙,限制对敏感接口的访问。

  • 定期更新和修补系统漏洞,以防止利用这些漏洞进行内网渗透。

  • 使用网络入侵检测系统(IDS)或入侵防御系统(IPS)来监测和阻止潜在的内网扫描行为。

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

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

相关文章

Redis实现订单超时自动关闭真的好吗,MQ更具性价比

由于Redis具有过期监听的功能,于是就有人拿它来实现订单超时自动关闭的功能,但是这个方案并不完美。今天来聊聊11种实现订单超时自动关闭的方案,总有一种适合你!这些方案并没有绝对的好坏之分,只是适用场景的不大相同。…

2024--Django平台开发-Web框架和Django基础(二)

day02 Web框架和Django基础 今日概要: 网络底层引入,到底什么是web框架?常见web框架对比django快速上手(创建网站)常见操作:虚拟环境、django项目、多app应用、纯净版逐点剖析:路由、视图、模…

【Linux 内核源码分析】关于Linux内核源码目录结构

Linux内核源码采用树形结构。功能相关的文件放到不同的子目录下面,使程序更具有可读行。 使用Source Insight打开源码,如下图所示,可以看到源码是树形结构。 目录含义描述arch存放与体系结构相关的代码,包括不同硬件平台的特定代…

聚类分析 | Matlab实现基于RIME-DBSCAN的数据聚类可视化

聚类分析 | Matlab实现基于RIME-DBSCAN的数据聚类可视化 目录 聚类分析 | Matlab实现基于RIME-DBSCAN的数据聚类可视化效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.聚类分析 | Matlab实现基于RIME-DBSCAN的数据聚类可视化(完整源码和数据) 2.多特征输入&…

Linux下从sqlite3源码编译出sqlite3库及相关可执行程序

目录 1. 下载sqlite3源码并编译 2. 下载Tcl库并编译 3. 再次编译sqlite源码 1. 下载sqlite3源码并编译 打开SQLite Download Page,滚动到页面的下面,找到源码量最大的那个(其它的估计也行,但源码最大的本人感觉功能最全&#…

【LeetCode-剑指offer】-- 25.两数相加II

25.两数相加II 方法:栈 /*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode() {}* ListNode(int val) { this.val val; }* ListNode(int val, ListNode next) { this.val val; this.ne…

【详解】求解迷宫所有路径(递归实现)----直接打穿迷宫

目录 递归的模型: 栈帧: 递归调用深度: ​编辑 用递归算法求解迷宫问题: 小结: 结语: 递归的小小总结,朋友们可以看看,有助于理解后面的递归程序。 递归的模型: …

Python如何求解最长公共子序列

Python-求解两个字符串的最长公共子序列 一、问题描述 给定两个字符串,求解这两个字符串的最长公共子序列(Longest Common Sequence)。比如字符串1:BDCABA;字符串2:ABCBDAB。则这两个字符串的最长公共子序…

第14课 利用openCV快速数豆豆

除了检测运动,openCV还能做许多有趣且实用的事情。其实openCV和FFmpeg一样都是宝藏开源项目,貌似简单的几行代码功能实现背后其实是复杂的算法在支撑。有志于深入学习的同学可以在入门后进一步研究算法的实现,一定会受益匪浅。 这节课&#…

UI5与后端的文件交互(一)

文章目录 前言一、RAP的开发1. 创建表格2. 创建CDS Entity3. 创建BDEF4. 创建implementation class5. 创建Service Definition和Binding6. 测试API 二、创建UI5 Project1. 使用Basic模板创建2. 创建View3. 测试页面及绑定的oData数据是否正确4. 创建Controller5. 导入外部包&am…

src refspec master does not match any

新项目推送至 Git 空仓库时抛出如下异常 src refspec master does not match any 初始化 init 都做了但反复尝试 git push -u origin master 均无果 后发现权限不够 .... 起初设置为开发者,后变更为了主程序员再次尝试 push 成功 .... 以上便是此次分享的全部内容,…

基于数据库和NER构建知识图谱流程记录

文章目录 环境准备拓扑设计构建流程设计文件流设计交互解析算法实现数据库交互NER解析相似度计算 基于数据库的文件生成从数据库中读取字段将字段后处理后保存为文件 基于文件的知识图谱构建bug修改与算法优化图数据库连接问题批量构建知识图谱问题批量删除边问题空值处理问题去…