[原创]利用Browser协议探测内网主机操作系统版本(无需端口无视防火墙)
利用Browser协议可获取机器IP、MAC、机器名、操作系统、域,如图
浏览
工作组和域
Browser发包时间
去年无意发现browser协议中含有机器名、系统版本,发包时间随机,有些2分钟、5分钟、甚至12分钟等才发
几分钟甚至于10几分钟才有一条,其它数据包每分钟几百条,可能很多人长时间抓包,也未能发现关键信息
不单只是很长时间才发,而且也不一定每个包里面都含有机器名,或许这就是一直以来把Browser忽略的真相
如图所示,出现13机器ID为6247数据包,出现15机器已达到2万多,出现10机器已7万多个包(这鬼才能发现)
所以为了能够获取到内网机器信息,我们需要不停的监视Browser包,从中提取有效机器名与系统版本

无视防火墙
虽然属于SMB协议,但把文件和共享前的勾去掉依旧可获取,该报文是由目标机器向外发送,所以445关闭也不影响
在目标开启防火墙的情况下也可获取,这与cping通过445端口或ICMP探测主机方式不一样。
另外发现NBNS也含有机器名和域名,但无系统版本,如下图
操作系统、域机器判断
除了XP和WIN8.1特别一点以外,其它系统
0x00000002 Request XP名称第3位开始 Win8.1也是 无法判断系统版本
0x0000000c Domain 域内机器
其它 of o1 local
by K8哥哥 2018.11.26
利用代码
暂时没时间用其它语言编写,先用python的scapy框架来实现,如果要编译成可执行文件可能会很大,可能还要安装相关依赖
# -*- coding: UTF-8 -*-
#author: k8gege
#https://github.com/k8gege/K8tools/blob/master/K8getPC.py
#https://www.cnblogs.com/k8gege
import sys
import queue
from scapy.all import *
from pprint import pprint def search(data, key):
#print "data: " + data
i=data.find(key)
if i > -1:
masterType = "617574686F723A206B3867656765"
masterType = data[i+len(key):i+len(key)+2]
if masterType=="02":
return data[i+len(key)+4:i+len(key)+34],masterType,data[i+len(key)+44:i+len(key)+48]
return data[i+len(key)+12:i+len(key)+42],masterType,data[i+len(key)+44:i+len(key)+48]
return "" def getver(data):
if data=="0500":
return "Win2000"
elif data=="0501":
return "WinXP"
elif data=="0502":
return "Win2003"
elif data=="0600":
return "Vista"
elif data=="0601":
return "Win7_2008"
elif data=="0602":
return "Win8_2012"
elif data=="0603":
return "Win8.1"
elif data=="0a00":
return "Win10_2016"
return data def packet_callbacke(packet):
#print(packet.show())
try:
data=packet.load.encode('hex')
osname,masterType,osver = search(data, "5c4d41494c534c4f545c42524f57534500")
if (osname!=""):
if masterType=="0c":
print packet.getlayer(IP).src+"\t"+packet.src+"\t"+osname.decode('hex')+"\t[Domain]"
else:
print packet.getlayer(IP).src+"\t"+packet.src+"\t"+osname.decode('hex')+"\t["+getver(osver)+"]"
except:
pass print "IP\t\tMAC\t\t\tOSname\t\tOSver" try:
sniff(iface = sys.argv[1],filter="", prn=packet_callbacke)
except:
pass
下载:
https://github.com/k8gege/K8tools/blob/master/K8getPC.py
https://github.com/k8gege/k8getPC
相关文章:
Cscan 获取内网主机开放Web、Banner、标题信息
https://www.cnblogs.com/k8gege/p/10519321.html
Cping 获取内网存活主机-MAC地址-主机名--操作系统--SMB漏洞
https://www.cnblogs.com/k8gege/p/10367844.html
[原创]利用Browser协议探测内网主机操作系统版本(无需端口无视防火墙)的更多相关文章
- 后渗透阶段之基于MSF的内网主机探测
当我们通过代理可以进入某内网,需要对内网主机的服务进行探测.我们就可以使用MSF里面的内网主机探测模块了. 在这之前,先修改 /etc/proxychains.conf ,加入我们的代理. 然后 pr ...
- ssh反向连接内网主机
holer听别人说也挺好用不过本人没试过:https://github.com/Wisdom-Projects/holer 利用autossh建立稳定隧道,前提双方互加公钥信任. # yum inst ...
- 利用SSH端口转发实现远程访问内网主机远程桌面(一) 建立SSH转发
近期家里更换了移动的宽带,拨号后拿到的是10开头的内网IP,就不能像之前一样通过路由器的端口映射实现从外网访问主机的远程桌面.这种情况下可以利用一台具有公网IP的服务器充当中转,利用SSH的隧道转发功 ...
- 用SSH访问内网主机的方法
如今的互联网公司通常不会直接自己直接配主机搭建服务器了,而是采用了类似阿里云的这种云主机,当应用变得越来越大了之后,就不可避免地增加主机,而出于成本考虑,不可能给每一台主机都分配公网带宽,所以实际的情 ...
- [W3bSafe]Metasploit溢出渗透内网主机辅助脚本
文章来源i春秋 脚本用Shell编写 有的内网特别脆弱 本脚本主要就是 测试的话方便一点 输入内网网关就能调用Metasploit全部模块测试整个内网 运行截图<ignore_js_op ...
- NAT123之类的软件是如何实现访问域名然后穿透到内网主机的80端口?——有公网ip就是动态域名解析,没有就是穿透+代理转发
实际上两种都用到了:1,服务提供商(123NAT,花生壳)做Proxy转发 2,两个私网地址直接连接:STUN 和TURN 使用动态域名解析还是端口映射 什么情况下使用动态域名解析?什么情况下使用 ...
- Apache 2.4.7在CentOS6.4中安装配置反向代理解决单外网IP对应多个内网主机的方法实践
欢迎转载,转载时请保留全文及出处. Apache 2.4.7在CentOS6.4中安装配置反向代理解决单外网IP对应多个内网主机的方法实践 Apache安装 下载源程序(http://httpd.ap ...
- Nginx代理实现内网主机访问公网服务
通过Nginx代理实现内网主机访问公网和接口服务 1.需求: m2.test.com为公司测试环境的微信测试域名,因为要调用微信服务接口需要访问外网,现通过Nginx代理现实此功能. 2.环境如下: ...
- AUTOSSH设置ssh隧道,实现反向代理访问内网主机
内网主机上配置: autossh -M -CNR :localhost: ubuntu@123.207.121.121 可以实现将访问主机123.207.121.121的1234端口的数据,通过隧道转 ...
随机推荐
- webpack分片chunk加载原理
首先,使用create-react-app快速创建一个demo npx create-react-app react-demo # npx命令需要npm5.2+ cd react-demo npm s ...
- 【ES6】Generator+Promise异步编程
一.概念 首先我们要理解Generator和Promise的概念. Generator:意思是生成器,可以在函数内部通过yeild来控制语句的执行或暂停状态. *Foo(){ yeild consol ...
- James Munkres Topology: Sec 22 Exer 3
Exercise 22.3 Let \(\pi_1: \mathbb{R} \times \mathbb{R} \rightarrow \mathbb{R}\) be projection on th ...
- pycharm的list中copy的应用
#拷贝的意思 li = [11,22,33,44] v = li.copy() print(v) #输出结果 [11,22,33,44] #浅拷贝
- HDU-AcmKeHaoWanLe训练实录
菜鸡队训练实录. 现场赛记录:[名称:奖项/排名] 2017: ICPC Shenyang:Gold/3 CCPC Hangzhou:Gold/3 ICPC Beijing:Gold/13 CCPC ...
- Maven 插件之 docker-maven-plugin 的使用
目录 docker-maven-plugin 介绍环境.软件准备Demo 示例 配置 DOCKER_HOST示例构建镜像 指定构建信息到 POM 中构建使用 Dockerfile 构建使用命令绑定 D ...
- redis的过期策略都有哪些?
1.面试题 redis的过期策略都有哪些?内存淘汰机制都有哪些?手写一下LRU代码实现? 2.面试官心里分析 1)老师啊,我往redis里写的数据怎么没了? 之前有同学问过我,说我们生产环境的redi ...
- 3.SSM整合_多表_一对多的增删改查
1.配置文件跟上一章一样,这里就不多写了,主要是Mapper映射文件,一对多反过来就是多对一 一 接口 public interface CategoryMapper { public void ad ...
- Go语言基础之接口
Go语言基础之接口 接口(interface)定义了一个对象的行为规范,只定义规范不实现,由具体的对象来实现规范的细节. 接口 接口介绍 在Go语言中接口(interface)是一种类型,一种抽象的类 ...
- Spring源码学习-容器BeanFactory(一) BeanDefinition的创建-解析资源文件
写在前面 从大四实习至今已一年有余,作为一个程序员,一直没有用心去记录自己工作中遇到的问题,甚是惭愧,打算从今日起开始养成写博客的习惯.作为一名java开发人员,Spring是永远绕不过的话题,它的设 ...
