《Python 黑帽子》第一、二章
代码托管:[https://github.com/jsjliyang/python3-Black.Hat/tree/master/chapter2)
代码运行:
- TCP服务端启动
- TCP客户端启动
- UDP客户端启动
教材《网络攻防技术》第三章学习
1.网络信息收集的方法
①网络踩点(footprinting)
网络踩点是指攻击者通过对目标组织或个人进行有计划、有步骤的信息收集,从而了解攻击目标的网络环境和信息安全状况,得到攻击目标完整剖析图的技术
- Web搜索与挖掘。充分利用Web搜索的强大能力,对目标组织和个人的大量公开或意外泄露的Web信息进行挖掘,从而能够找出各种对进一步攻击非常关键的重要信息。
- DNS和IP查询。通过公开的一些互联网基础信息服务,能够找出目标组织域名、IP以及地理位置之间的映射关系,以及注册的详细信息,同时可利用DNS服务获取到组织内部系统情况。
- 网络拓扑侦查。找出可以作为潜在攻击目标的网络之后,攻击者可以通过网络拓扑侦察尝试去确定哪些网络的网络拓扑结构和可能存在的网络访问路径。
②网络扫描(scanning)
网络扫描的基本目的是探测目标网络,以找出尽可能多的连接目标,然后再进一步探测获取类型、存在的安全弱点等信息,为进一步攻击选择恰当目标和通道提供支持。网络扫描的技术类型包括:主机扫描、端口扫描、操作系统与网络服务辨识、漏洞扫描等。- 主机扫描。也称ping扫描,通过对目标网络IP地址范围进行自动化扫描,确定这个网络中存在的活跃设备和系统。可以利用ICMP、TCP、UDP等协议,以及nmap、fping、superscan、pingsweep等工具。
- 端口扫描。探测活跃主机上开放了哪些TCP/UDP端口。TCP端口扫描包括Connect扫描、SYN扫描两种基本类型,以及FIN扫描、ACK扫描、Null扫描、Xmas扫描、TCP窗口扫描、FTP弹射扫描等高级扫描技术;UDP端口扫描只有一种方式。
- 系统类型检查。探查活跃主机的系统及开放服务的类型,包括操作系统主动探测、操作系统被动辨识、网络服务主动探测与网络服务被动辨识。
- 漏洞扫描。探测发现目标网络中特定操作系统、网络服务与应用程序中存在的安全漏洞。安全漏洞是指硬件、软件或策略上存在的安全缺陷,从而使得攻击者能在未授权的情况下访问、控制系统。可以借助Nessus等漏洞扫描器。
③网络查点(enumeration)- 旗标抓取。最基本的查点技术,指利用客户端工具连接至远程网络服务并观察输出以收集信息的关键技术,一般仅限于对采用明文传输协议的网络服务。
- 网络服务查点。利用互联网上一些通用的网络应用服务协议,如web服务、FTP文件传输服务、POP3及SMTP电子邮件首发服务。最经典的网络查点技之一是利用SMTP电子邮件协议发送两条特殊的指令:VRFY和EXPN,可以可用来查看其他用户的个人资料。nmap中也实现了RPC查点的功能。
2.防范方法
- Web搜索与挖掘:组织安全敏感信息及个人隐私信息不要在网上发布,个人上网时尽量保持匿名,需要提供个人信息时选择良好声誉的网站,掌握google hacking技巧,对发现泄漏的个人信息及时修改或清除。
- DNS和IP查询:主要在于公共数据库中提供信息的安全问题,要求注册机构提高安全防护。个人来说,更新管理性事务联系人的信息,尤其是他离职的时候;在不违反规定的前提下尝试使用虚构的人名作为管理性事务联系人;慎重考虑提交的电话号码和地址等信息;注意域名注册机构允许更新注册信息的方式。
- 网络拓扑侦查:部署网络入侵监测系统或入侵防御系统,使用RotoRouter等软件;将网络边界路由配置成只允许特定类型的系统响应ICMP和UDP数据包。
- 主机扫描:使用诸如Snort之类的网络入侵监测系统,在网关等位置对网络中的主机扫描活动进行探测;在主机上安装可以监测扫描的软件,如OSSEC,各种商业化桌面防火墙工具。
- 端口扫描:立足于预防,禁用不必要的服务尽可能的缩小网络的攻击暴露面。可以利用网络入侵检测系统,有很多专用软件可以帮助做这种事。
- 系统类型检查:没有太好的方法,使用端口扫描监测工具可以监测系统类型主动探测行为,还是依赖可靠地防火墙比较合理。
- 漏洞扫描:最好的防范措施,就是系统管理员要赶在攻击者对网络实施漏洞扫描之前先行发现安全漏洞与不安全配置;保证所安装的操作系统和应用软件来源的安全性。
- 网络查点:把不必要的网络服务全部关掉、加强网络服务的安全配置、放弃使用不安全的网络协议、采用一些工具改变网络服务旗标。
教材p115作业
- 搜索自己在互联网上的足迹。
使用真实姓名搜索,几乎搜索不出来信息,因为有一些重名人的信息。在博客园的使用中暴露了个人学号、姓名等信息。 - 使用namp扫描靶机。
在课上已经做过了,如图。 - 使用nessus扫描特定靶机。
- nessus下载
在官网下载与自己kali相对应的nessus版本,我选择的是Nessus-6.11.3-debian6_amd64。 - nessus安装
需要设置用户名和密码,之后要在官网进行注册获取激活码,激活的过程可能会出现失败,多试几次就行。接着会下载插件进行初始化。 - 安装完成
- 选择扫描模版
- 扫描windows靶机
- 扫描结果报告
kali视频学习
6.KaliSecruity-信息搜集之主机探测
- 主机探测指识别目标主机是否可用。这个探测过程中,需要得到目标是否online等信息,由于入侵检测系统IDS和入侵保护系统IPS的存在,在测试中还要考虑对各种保护措施的探测,如Web应用防火墙WAF等。
- 使用
netenum
扫描C段,使用ping测试主机是否在线。 fping
加-g
参数扫描ip段内主机在线状态,列出可达和不卡达的。nbtscan -r
使用本地137端口扫描内网网段。arping
探测目标MAC地址(arping本地没有什么效果)。netdiscover
被动截获IP地址、mac地址、mac厂商。加参数- i
设定网卡dmitry
(deepmagic information gathering tool)扫描目标详细信息,包括whois
、tcp port
等。- 对探测目标进行WAF探测,
wafw00f
工具,原理是提交一个必定在黑名单里面的命令或者字符,与正常的对比,检测是否受waf保护。 - 对探测目标是否存在负载均衡检测,
lbd
工具(load balance detector),检测机制基于DNS解析、HTTP头(服务器和日期),从中找到服务器应答之间的差异,可以帮助发现多个IP地址映射到单个域名,并由此确定针对性的测试范围(如DDOS)。
7.KaliSecruity-信息搜集之主机扫描
- 主机扫描工具
nmap
,图形化界面zenmap
,分布式框架dnmap
。 - 功能:主机探测、版本检测、系统检测、支持探测脚本编写。
- TCP Connect 扫描,三次握手连接,优点是不需要任何权限,并且多线程速度较快,缺点是容易被发现和过滤。
- TCP STN扫描,半开式扫描,优点在于一般不会在目标计算机上留下记录,但现在也开始针对这种方式进行过滤。
- TCP FIN扫描,FIN数据包比SYN方式更加隐蔽,更加不容易被检测。这种扫描方法的思想是关闭的端口会用适当的RST来回复FIN数据包,而打开的端口会忽略对FIN数据包的回复。
- DNmap是一款居于Nmap的分布式框架,使用客户端/服务端架构,服务器接收命令并发送至客户端进行Nmap安全扫描,扫描完毕后,客户端返回扫描结果。
- Zenmap是Nmap的图形化界面,可以让Nmap扫面工作更人性化。
- 万能开关扫描
namp -A
包含了1-10000端口的端口扫描、操作系统扫描、脚本扫描、路由跟踪、服务探测。 nmap -Pn
扫描前不进行ping操作
8.KaliSecruity-信息搜集之指纹识别
- 识别目标主机的的操作系统版本与应用版本。
- banner抓取是最基础最简单的指纹识别,不需要专门的工具,是应用程序指纹识别。
curl -I site
- 很多网站会修改banner或者禁止输出,可以使用telnet命令链接端口进行探测,如
Telnet <target-IP><targrt-Port>
- 常规主动指纹识别工具:nmap(-sV参数)、xprobe2(但是使用默认参数准确率堪忧)。
- 被动指纹识别工具p0f,可以用来分析NAT、负载均衡、应用代理等。
- WEB指纹识别工具whatweb,可以探测常规的网络服务。
whatweb site
- 针对具体的WEB CMS如Wordpress,可以使用WPScan等工具进行CMS的指纹枚举,弹指可能存在的插件、主题模版等信息。
wpscan -u site
9.KaliSecruity-信息搜集之协议分析
- SMB(Server Message Block)利用工具:acccheck、nbtscan、nmap、zenmap。
- SMTP(Simple Mail Transfer Protocol)分析:nmap、smtp-user-enum(枚举用户名)、swaks(尝试使用指定server发送测试邮件)、zenmap。
- SNMP(Simple Network Management Protocol)分析:braa、cisco-auditing-tool、cisco-torch、copy-router-config、merge-router-config、nmap、onesixtyone、snmpcheck、zenmap。
- SSL分析:sslscan工具可以扫描服务器SSL接受的加密方式公钥等其他信息。除此之外还有ssldump、sslh、sslaudit、sslsniff等。
- VoIP分析、VPN分析、存活主机分析、电话分析等。
- 数据包分析工具Wireshark。Wireshark使用sinPCAP作为借口,直接与网卡进行数据报文交换。
10.KaliSecruity-漏洞分析之OpenVAS安装
视频中的步骤如下:
- 检查安装状况,
openvas-check-setup
。 - 生成CA证书,
openvas-mkcert
。 - 更新NVT(漏洞信息),
openvas-nvt-sync
。 - 执行
openvas-mkcert -n om -i
为客户端创建证书。 - 添加用户,
openvasad -c add_user -n 名字 -r 角色Admin
,然后输入密码。也可以使用openvas-adduser
添加用户。 - 执行
openvassd
打开服务,开始加载插件的过程(时间比较久)。 - 加载插件完成后,执行
openvasmd --rebuild
。 - 继续执行
openvas-scapdata-sync
和openvas-certdata-sync
更新漏洞信息库内容(可能需要一两个小时)。 - 结束openvasssd进程,重新启动服务
openvasmd
,使用openvas-check-setup
检查无误。 - 默认已经打开服务,或手工转发端口
gsad --listen=0.0.0.0 --port=9392 --alisten=127.0.0.1 --aport=9393 --mlisten=127.0.0.1 --mport=9390 --http-only
。 - 访问本地http://localhost:9392/登录。
实际操作:
- 安装openvas,最新版的Kali Linux不再自带OpenVAS了,所以要自己配置安装OpenVAS。使用
apt-get install openvas
命令安装,如果出现无法定位软件源,需要增加软件源,见kali sudo apt install 无法定位软件包 - 检查安装状况,
openvas-check-setup
。发现提示需要更新漏洞信息库。 - 使用提示中
greenbone-nvt-sync
命令更新漏洞库。 - 检查安装状况,
openvas-check-setup
。发现提示需要rebuild。 - 执行
openvasmd --rebuild
。 - 检查安装状况,
openvas-check-setup
。发现提示需要添加用户。 - 使用
openvasmd --create-user=root --role=Admin && openvasmd --user=root --new-password=123456
命令添加用户,用户名root,角色管理员。 - 检查安装状况,
openvas-check-setup
。发现提示需要更新漏洞信息库内容。 - 使用命令'greenbone-scapdata-sync'更新漏洞信息库内容(时间比较久)。
- 历时很久,终于搞定
- 使用
openvas-check-setup
检查,需要使用greenbone-certdata-sync
继续升级漏洞库。 - 继续升级漏洞库
- 使用
openvas-check-setup
检查,需要使用打开服务。 - 网上搜索各种办法尝试失败,最后使用
openvas-setup
命令安装完成。 - 使用
openvas-check-setup
检查无误 - 访问本地http://localhost:9392/登录。
OpenVAS安装总结
直接使用openvas-setup
命令进行安装即可,不需要每次都使用openvas-check-setup
进行检查,配置时注意用户名密码和监听端口等即可。