近源渗透(2)
被动扫描
客户端在每个信道上切换以监听AP周期性(100ms)发送的beacon帧,获得接入点的SSID(热点名称)、BSSID(AP的MAC地址)、所支持的速率。
主动扫描
客户端在每个信道之间切换,并向广播地址(ff:ff:ff:ff:ff:ff)发送Probe Requests帧,一旦发送后就会启动一个计时器并等待响应,计时器结束后处理所有收到的应答。没有响应的话就切换至下一个信道重复以上过程。
定向探测请求:发送的Probe Requests帧指定SSID,只有该SSID会应答;
广播探测请求:发送的Probe Requests帧SSID的值为空,收到请求的所有热点都会响应。
监听模式
非监听模式下,系统内核会将筛选后的802.11帧封装成普通的网络帧传递给上层;
监听模式下,内核会直接将802.11帧直接传递给上层,在用户层直接通过接口就可得到原始数据包。
iwfonfig 命令
将wlan0设置为监听模式并设置信道为11
ifconfig wlan0 down
iwconfig wlan0 mode monitor
ifconfig wlan0 up
iwconfig wlan0 channel 11
iw 命令
iw命令是iwconfig的扩展,可以查看无线网卡接口名称、工作模式、信道等信息
iw dev wlan0 info
除此之外,iw命令还可以开启虚拟接口:
iw dev wlan0 interface add mon0 type monitor
ifconfig mon0 up
iw dev mon0 set channel 11
撤销命令
iw dev mon0 del
Airmon-ng(小写的airmon-ng是Airmon-ng工具中的一个组件)是一款常用的渗透测试及破解类工具之一,他包含了多款无线审计工具
使用airmon-ng start wlan0 开启监听模式
airodump-ng wlan0mon 抓包
其中包括两部分内容:
上半部分:周边的热点信息
下半部分:捕获到的无线客户端
Kismet是一款802.11协议数据包捕获分析框架,额外支持无线帧的嗅探和破解、隐藏热点的发现 以及GPS和蓝牙扫描
过滤规则:
筛选所有Beacon帧: wlan.fctype_subtype == 0x0008
筛选所有Probe Response帧: wlan.fctype_subtype == 0x0005
出于安全考虑,许多的无线网络都会开启隐藏模式。在此模式下Beacon帧中将不包含SSID,也不在回复Broadcast Probe REquests帧。 合法的客户端想要连接,需要发送包含了热点名称的Directed Probe Requests帧。
简单来说就是:必须知道热点的名称,才可以与隐藏模式下的热点建立连接
薄弱点
合法的客户端想要连接,需要发送包含了热点名称的Directed Probe Requests帧
利用方式
1.抓包,等待合法用户连接
2.将合法用户从连接中“踢掉”,迫使他重新连接发起交互,抓包(deauth攻击)
总结
隐藏热点并不能增加安全性,攻击者只是多个一个步骤而已。
Kali从入门到银手镯(二):开启WPS的无线网络渗透测试
很多无线路由器都支持WPS(Wifi Protection Setup)功能,它是一种可以让用户无需密码直接连接Wifi的技术。本来这种技术的初衷是让用户更加方便的连接网络,但是因为它有严重的安全漏洞,所以反而让用户的网络更加不安全。因此在这里推荐大家使用路由器的时候没事就把WPS功能关掉。
因为要进行渗透测试,所以首先我先把自己路由器的WPS功能开启,当然测试结束之后别忘了关闭WPS功能。
使用前一篇文章介绍的方法安装好Kali虚拟机或者U盘系统,然后就可以准备开始了。
当然这里使用到的工具并不是只有Kali能用,其他Linux发行版也可以使用。但是还是推荐Kali,因为很多渗透测试工具都是按照安防论文的理论来实现的,很多都已经不再维护了。而Kali收集了很多尚在维护的工具分支,如果你使用其他发行版的话,可能其软件仓库中的版本还是原来的旧版本。
本文比较简单,涉及到的工具有两个,reaver和aircrack-ng。
我用的是台式机安装的Kali虚拟机系统,自然是没有无线功能的,所以需要一块无线网卡。值得称道的是现在Linux驱动非常完善了,我原来买的360无线网卡可以直接驱动成功。
连接方法也十分简单,电脑插上无线网卡,然后在VMware软件右下角找到无线网卡的图标,点击并选择连接到虚拟机,这样就大功告成了。整个系统可能会卡几秒钟,之后就正常了。
连接成功后,在Kali虚拟机中应该可以看到Wifi图标了,用lsusb命令还可以查看到无线网卡的厂商和具体型号,可以看到我的无线网卡具体型号是MT7601U。
首先输入 sudo airmon-ng 命令查看一下当前系统中的无线网卡,在Kali中这个接口名默认应该是wlan0。
然后输入下面的命令关闭可能影响网卡监听的程序,然后开启监听模式。开启完毕之后,再次输入 sudo airmon-ng ,应该就会看到这次接口名变成了wlan0mon,这样就说明成功开启了监听模式,可以进行下一步了。
输入下面的命令开始扫描附近的无线网络。
稍后应该就会显示出附近开启了WPS的所有网络了,dBm是信号大小,值越小说明信号越强,按Ctrl+C即可中断命令。如果想要查看所有网络的话,可以添加 -a 参数,它会列出所有网络(包括了未开启WPS功能的网络)。
这时候就要记下来网络的BSSID(网络Mac地址)以及ESSID(网络名称),准备好下一步的工作了。
好了,下面就可以开始正式的工作了,其实说起来原理也很简单,WPS PIN是一个8位数字密码,所以其实我们要做的就是不断的尝试,最终找到这个PIN。总共需要尝试的次数有一亿次,看起来这个数字非常大,但是在安全领域,一亿次算是一个非常小的次数了,很多加密算法要攻破甚至需要全世界所有计算机同时计算几百年。
当然要搞定WPS的PIN并不需要这么长时间,最多10来个小时就可以了,平均用时可能也就4-5个小时左右。而且一旦知道了PIN,获得WIFI密码仅需要数秒即可搞定。之后只要PIN码没有发生变化,就算WIFI密码被修改,也可以很轻松的搞定。
接下来就要轮到本文的主角登场了,这就是reaver,专门用于破解WPS Wifi网络的工具。输入 -h 参数即可查看帮助信息,这里简单列出一些我们要使用的参数。
详细参数参考reaver的帮助,并不难懂。
了解了reaver命令行的用法之后,就可以正式开始了。很多时候一次可能并不能成功,需要尝试多次。
因为是测试,所以我干脆直接指定了PIN的值。为了更详细的了解命令运行过程,可以开启2级或者3级输出看看reaver工具到底干了啥。
如果出现了下面的bad FCS,可以在添加 -F 参数忽略帧校验错误,然后再次尝试。
如果一切正常的话,应该会在几分钟内通过PIN解开WIFI的密码。如果不知道PIN密码的话,也可以通过几个小时的尝试来试出PIN进而得知WIFI密码。因此我们在日常使用的时候,一定要记得关掉WPS功能,它是很多漏洞的根源。
Mac常用工具安装命令
安装Homebrew报错解决
3.更换ruby源
4.安装CocoaPods
sudo gem install -n /usr/local/bin cocoapods
苹果mac电脑中brew的安装使用及卸载详细教程
brew 又叫Homebrew,是Mac OSX上的软件包管理工具,能在Mac中方便的安装软件或者卸载软件, 只需要一个命令, 非常方便
brew类似ubuntu系统下的apt-get的功能
安装brew
brew 的官方网站: 在官方网站对brew的用法进行了详细的描述
安装方法: 在Mac中打开Termal: 输入命令:
ruby -e "$(curl -fsSL )"
不知道为什么, 在国内经常被屏蔽
使用brew安装软件
一个命令就搞定了, 比如安装git
brew install git
比如安装wget
brew install wget
使用brew卸载软件
卸载更方便了
brew uninstall wget
使用brew查询软件
有时候,你不知道你安装的软件的名字, 那么你需要先搜索下, 查到包的名字。
比如我要安装
brew search /wge*/
/wge*/是个正则表达式, 需要包含在/中
其他brew命令
brew list 列出已安装的软件
brew update 更新brew
brew home 用浏览器打开brew的官方网站
brew info 显示软件信息
brew deps 显示包依赖
brew upgrade 升级
升级完毕后,会有一个summary(总结) 及 Caveats(注意事项),如:
php5.6
php7.0
系统中正在使用的版本php7.2
注意:
切换版本步骤:
mac下使用命令切换PHP版本,使用brew-php-switcher工具
修改apache下的http.conf配置文件信息,以对应环境中的PHP版本
参考文档:
安装完成后的记录参考:主要有Extensions \ PHP CLI \ PHP-FPM
nginx
mysql 说明了mysql的密码以及启动方式
mqsql连接的一些坑及填坑方法
使用命令 mysql -uroot 启动了mysql,但是不能操作数据,提示如下:
('mysql.infoschema'@'localhost') does not exist
然后,决定使用命令 mysql_secure_installation 来启动mysql,并填写密码,提示 ... Failed! Error: Table 'mysql.role_edges' doesn't exist :
解决办法,升级mysql:
如下:
再次使用密码登录,第一步设置密码,第二步移除anonymous user,禁止root远程登录,删除测试数据等:
再次使用密码登录,进行查询等操作,可正常使用:
mysql升级参考文档:
apache和PHP的结合文档:
外国友人的博客: