2017-2018-2 20179216 《网络攻防与实践》第二周总结

时间:2022-06-06 21:53:44

第一节 国内外黑客介绍


国内黑客—龚蔚
2017-2018-2 20179216 《网络攻防与实践》第二周总结

龚蔚(Goodwell)中国黑客教父,绿色兵团创始人,COG发起人。1999年,龚蔚率领黑客组织"绿色兵团"成立上海绿盟信息技术公司。
龚蔚先生本科毕业后开始创办创办绿盟网络安全技术有限公司,开始了在互联网信息安全领域的工作,至今已十二年。先后就职于外资企业ISS (中国)、CA软件(中国)创建安全事业部。支持并参与的大型安全服务项目有几百余个,网络安全的足迹踏遍中国的所有城市,例如江苏电信、山东电信、上海热线、四川天府热线安全评估项目;金融行业中的民生银行、中国银行、工商银行、申银万国证券公司等提供安全评估服务;*企业中的上海市委宣传部、总参61所、上海电力、江苏省*厅等提供风险安全评估服务。

国外黑客—乔纳森·詹姆斯(Jonathan James)
2017-2018-2 20179216 《网络攻防与实践》第二周总结

乔纳森·詹姆斯(Jonathan James),历史上五大最著名的黑客之一。1999年,年仅16岁的詹姆斯就因为入侵NASA电脑被捕,成为世界上第一个因为黑客行为而被捕的未成年人。同年,他与FBI展开合作,找出了危害一时的梅丽莎(Melissa)病毒的发布者大卫·史密斯。次年,他又协助FBI找出了爱虫病毒的来源,从而声名大振。
黑客事迹

  • 入侵DTRA
    DTRA是国防部的机构,旨在减轻对美国的威胁,它的联合机构来自核、生物、化学、常规和特殊武器等机构。在认罪中,詹姆斯也承认他非法入侵了一个计算机路由器,并且在路由器上安装了一个隐藏的进入方式或"后门"。这个程序拦截了超过3300多个来自和发往(DTRA)的员工的电子信息。他同时也拦截了(DTRA)的员工的计算机帐户的至少19个用户名和密码,包括至少10个用户名和密码在军队计算机上。
  • 入侵NASA
    1999年6月29和30日,詹姆斯非法进入了总共13个美国国防部(DOD)的计算机系统,使用两个不同的互联网服务提供者原始地址发起攻击。作为入侵的一部份,他获得和下载了来自美国国家航空和宇宙航行局的专用软件价值约170万美元。这些软件支持着国际空间站(ISS)的物理环境,包括舱内实时温度和湿度的控制。作为入侵和数据偷袭的结果,国家航空和宇宙航行局的计算机系统在1999年7月被死机21天,损失超过4.1万美元。
    红客事迹
  • 找出梅丽莎病毒(Melissa)发布者
    Melissa病毒是大卫·史密斯(David L. Smith)在1999年发布的一个计算机病毒,他使用被盗的美国在线账号,向美国在线讨论组Alt.Sex发布了一个感染Melissa病毒的Word文档。病毒通过电子邮件迅速传播,使得被感染电脑的邮件过载。这一事件造成8000万美元损失。詹姆斯成功的跟踪到了大卫,并协助FBI对其进行抓捕。
  • 追踪爱虫病毒
    2000年5月份,爱虫病毒席卷全球,FBI曾在上个月疯狂的搜寻着"爱虫"病毒的来源,但在半个月毫无所获之后。詹姆士这次决心很大,他说:"我想我还能自己把握自己的命运,我知道什么该做,什么不该做。尽管我现在搞的是电脑,但我从9岁起就想学法律,我想两者结合起来一定会很伟大。"最终詹姆斯帮助FBI找出了病毒来源。

第二节 网络攻防技术中的五种常用工具、库信息


根据对SecTools的学习,以及对相关资料的参考,我在这里整理了几个较为常用的网络攻防工具。

- Wireshark

Wireshark(前称Ethereal)是一个网络封包分析软件。网络封包分析软件的功能是撷取网络封包,并尽可能显示出最为详细的网络封包资料。Wireshark使用WinPCAP作为接口,直接与网卡进行数据报文交换。
网络封包分析软件的功能可想像成 "电工技师使用电表来量测电流、电压、电阻" 的工作 - 只是将场景移植到网络上,并将电线替换成网络线。在过去,网络封包分析软件是非常昂贵,或是专门属于营利用的软件。Ethereal的出现改变了这一切。在GNUGPL通用许可证的保障范围底下,使用者可以以免费的代价取得软件与其源代码,并拥有针对其源代码修改及客制化的权利。Wireshark是目前全世界最广泛的网络封包分析软件之一。
详细用法见博客[wireshark分析tcp三次握手的过程](http://www.cnblogs.com/jmjm/p/7838031.html

- Burp Suite

BurpSuite是一款信息安全从业人员必备的集成型的渗透测试工具,它采用自动测试和半自动测试的方式,包Proxy,Spider,Scanner,Intruder,Repeater,Sequencer,Decoder,Comparer等工具模块。通过拦截HTTP/HTTPS的web数据包,充当浏览器和相关应用程序的中间人,进行拦截、修改、重放数据包进行测试,是web安全人员的一把必备的瑞士军刀。
详细用法见博客[Burp Suite实现重放攻击](http://www.cnblogs.com/jmjm/p/7875607.html

- Nessus

Nessus是一个功能强大而又易于使用的远程安全扫描器,它不仅免费而且更新极快。安全扫描器的功能是对指定网络进行安全检查,找出该网络是 否存在有导致对手攻击的安全漏洞。该系统被设计为client/sever模式,服务器端负责进行安全检查,客户端用来配置管理服务器端。在服务端还采用 了plug-in的体系,允许用户加入执行特定功能的插件,这插件可以进行更快速和更复杂的安全检查。在Nessus中还采用了一个共享的信息接口,称之 知识库,其中保存了前面进行检查的结果。检查的结果可以HTML、纯文本、LaTeX(一种文本文件格式)等几种格式保存。

- Metasploit

Metasploit是一个免费的、可下载的框架,通过它可以很容易地获取、开发并对计算机软件漏洞实施攻击。它本身附带数百个已知软件漏洞的专业级漏洞攻击工具。当H.D. Moore在2003年发布Metasploit时,计算机安全状况也被永久性地改变了。仿佛一夜之间,任何人都可以成为黑客,每个人都可以使用攻击工具来攻击那些未打过补丁或者刚刚打过补丁的漏洞。软件厂商再也不能推迟发布针对已公布漏洞的补丁了,这是因为Metasploit团队一直都在努力开发各种攻击工具,并将它们贡献给所有Metasploit用户。
Metasploit的设计初衷是打造成一个攻击工具开发平台。然而在目前情况下,安全专家以及业余安全爱好者更多地将其当作一种点几下鼠标就可以利用其中附带的攻击工具进行成功攻击的环境。
详细用法见博客[Metasploit的使用](http://www.cnblogs.com/jmjm/p/7841008.html

- Netcat

netcat是一个用于TCP/UDP连接和监听的linux工具, 主要用于网络传输及调试领域;可以打开TCP连接发送UDP报文,监听在TCP和UDP端口,以及TCP端口扫描,并将错误消息输出到屏幕上;也可以从文件或网络的一端读取数据,原封不动的将数据发送到另一台主机或文件中 。

  • 支持客户端和服务器
  • 支持连出和连入, TCP和UDP以及任意源/目的端口
  • 内建端口扫描功能, 带有随机数发生器
  • 支持设定tos等

下面简单地介绍一下Netcat的使用方法

  • nc的一些具体参数如下所示
    • -d 无命令行界面,使用后台模式
    • -e prog 程序重定向,一旦连接,就执行 [危险!!],(可以理解为向外发送一个东西,对方连上自动执行)
    • -g gateway 源路由跳跃点,不超过8
    • -G num 源路由指示器:4,8,12.。。。。。
    • -h 获取帮助信息
    • -i<延迟秒数> 延时设置,端口扫描时使用
    • -l 监听入站信息
    • -L 监听知道NetCat被结束(可断开重连)
    • -n 以数字形式表示的IP地址,不要使用DNS反向查询IP地址的域名
    • -o<输出文件> 可以将连接上往来传输的数据以16进制的形式记录到logfile中(每行的左半部分是16进制显示,右半部分为ascii显示)。其中,每行的第一个字符为”<”或”>”,分别表示接收的数据或发送的数据。

    • -p post 打开本地端口
    • -r 随机本地和远程的端口
    • -s addr 本地源地址
    • -t 以TELNET的形式应答入站请求
    • -u 用UDP建立连接
    • -v 显示详细信息[使用-vv获取更信息的信息]
    • -w<超时秒数> 连接超时设置
    • -z I/O模式[扫描时使用],连接成功后立即关闭连接, 不进行数据交换端口号可以是单个的或者存在一个范围: m-n[包含值]

2017-2018-2 20179216 《网络攻防与实践》第二周总结

- Nmap

Nmap是一款网络扫描和主机检测的非常有用的工具。Nmap是不局限于仅仅收集信息和枚举,同时可以用来作为一个漏洞探测器或安全扫描器。它可以适用于winodws,linux,mac等操作系统。Nmap是一款非常强大的实用工具,也是一个非常普遍的工具。Nmap在实际中应用场合如下:

  • 通过对设备或者防火墙的探测来审计它的安全性
  • 探测目标主机所开放的端口
  • 通过识别新的服务器审计网络的安全性
  • 探测网络上的主机

下面简单地介绍一下Nmap的使用方法

  • Nmap用于主机发现的一些用法

    • -sL: List Scan 列表扫描,仅将指定的目标的IP列举出来,不进行主机发现。

    • -sn: Ping Scan 只进行主机发现,不进行端口扫描。

    • -Pn: 将所有指定的主机视作开启的,跳过主机发现的过程。

    • -PS/PA/PU/PY[portlist]: 使用TCPSYN/ACK或SCTP INIT/ECHO方式进行发现。

    • -PE/PP/PM: 使用ICMP echo, timestamp, and netmask 请求包发现主机。-PO[protocollist]: 使用IP协议包探测对方主机是否开启。

    • -n/-R: -n表示不进行DNS解析;-R表示总是进行DNS解析。

    • --dns-servers

    • --system-dns: 指定使用系统的DNS服务器

    • --traceroute: 追踪每个路由节点

  • Nmap用于端口扫描的一些用法
    • -sS/sT/sA/sW/sM:指定使用 TCP SYN/Connect()/ACK/Window/Maimon scans的方式来对目标主机进行扫描。

      • -sU: 指定使用UDP扫描方式确定目标主机的UDP端口状况。

      • -sN/sF/sX: 指定使用TCP Null, FIN, and Xmas scans秘密扫描方式来协助探测对方的TCP端口状态。

      • --scanflags

      • -sI

      • -sY/sZ: 使用SCTP INIT/COOKIE-ECHO来扫描SCTP协议端口的开放的情况。

      • -sO: 使用IP protocol 扫描确定目标机支持的协议类型。

      • -b

具体操作演示如下

(1)用Nmap扫描特定IP地址
2017-2018-2 20179216 《网络攻防与实践》第二周总结

(2)用nmap扫描网址
2017-2018-2 20179216 《网络攻防与实践》第二周总结

(3)用nmap扫描特定端口
2017-2018-2 20179216 《网络攻防与实践》第二周总结

(4)namp对SEED靶机的扫描

  • IP地址活跃:-sP

2017-2018-2 20179216 《网络攻防与实践》第二周总结
2017-2018-2 20179216 《网络攻防与实践》第二周总结

  • 开放的TCP和UDP端口:-sT/-sS、-sU

2017-2018-2 20179216 《网络攻防与实践》第二周总结
2017-2018-2 20179216 《网络攻防与实践》第二周总结

  • 操作系统版本:-O

2017-2018-2 20179216 《网络攻防与实践》第二周总结

  • 安装的网络服务:-sV

2017-2018-2 20179216 《网络攻防与实践》第二周总结

第三节 黑客电影鉴赏——《碟中谍》


影片围绕美国不可能的任务情报署展开。该情报署的特工都身手不凡,而且他们也擅长使用易容术,让目标在不知情的情况下供出情报。影片从一开始就进入一个人物身份全是谜的间谍世界,观众还来不及琢磨,一个又一个高潮接踵而至。其中三处尤为精彩:主角从布拉格一家装修新潮的咖啡馆逃离时,打烂巨大的鱼缸,不仅画面独特,而且具有象征意义(他掉进一个大鱼吃小鱼的海洋世界);主角潜回*情报局偷文件的情节已成为经典;影片的最后一个高潮是他趴在火车顶上,前有隧道,后有直升机追赶,全然是视觉过山车的效果。节奏化的蒙太奇处理、追踪式的长镜头、“顶拍”视觉效果等要素使得《碟中谍》带有德·帕尔马强烈的个人风格,情节之巧妙、布局谋篇之细致、悬念设计之绝顶让人叹为观止,特别是伊桑·亨特潜入中情局总部,空降以窃取特工名单的那段“舞蹈”,把导演本人构造戏剧张力的功夫推向极致。

第四节 网络攻防实验


实验环境拓扑结构
2017-2018-2 20179216 《网络攻防与实践》第二周总结

vmware环境配置

  • 靶机:BT5R1
  • 攻击机:kali
  • SEED虚拟机
  • 蜜网网关
    • eth0 : NAT 模式
    • eth1 :主机模式
    • eth0 和 eth1 构成一个透明网桥

2017-2018-2 20179216 《网络攻防与实践》第二周总结

  • 在VMware中点击编辑--> 虚拟网络编辑器。
  • 选择VMnet1,设置如下(host-only模式,子网IP设置为192.168.200.128,子网掩码设置为255.255.255.128)

2017-2018-2 20179216 《网络攻防与实践》第二周总结

  • 选择VMnet8,设置如下(NAT模式,子网IP设置为192.168.200.0,子网掩码设置为255.255.255.128)

2017-2018-2 20179216 《网络攻防与实践》第二周总结

  • 点击NAT设置,设置如下
    2017-2018-2 20179216 《网络攻防与实践》第二周总结

  • 点击DHCP设置,设置如下、

2017-2018-2 20179216 《网络攻防与实践》第二周总结

获取攻击机IP地址
2017-2018-2 20179216 《网络攻防与实践》第二周总结

获取靶机IP地址

2017-2018-2 20179216 《网络攻防与实践》第二周总结

测试靶机与攻击机之间的连通性

2017-2018-2 20179216 《网络攻防与实践》第二周总结

说明靶机与攻击机连通
获取SEED虚拟机的IP地址
2017-2018-2 20179216 《网络攻防与实践》第二周总结

SEED虚拟机,连接攻击机与靶机
2017-2018-2 20179216 《网络攻防与实践》第二周总结

安装蜜网网关

  • 添加两块网卡,网络适配器2设为Host-only, 网络适配器3设为NAT。

2017-2018-2 20179216 《网络攻防与实践》第二周总结

  • 蜜网网关软件安装完毕,进入登录界面。以roo/honey缺省用户/口令登录。

2017-2018-2 20179216 《网络攻防与实践》第二周总结

  • 进行配置

2017-2018-2 20179216 《网络攻防与实践》第二周总结

测试虚拟机蜜罐和攻击机主机之间的网络连接
在蜜网网关上监听ICMP ping包是否通过内网口和外网口。

  • 攻击机 ping 靶机时tcpdump -i eth1 icmp:
  • 攻击机 ping 靶机时tcpdump -i eth0 icmp:
  • 靶机 ping 攻击机时,tcpdump -i eth1 icmp
  • 靶机 ping 攻击机时,tcpdump -i eth0 icmp
    通过测试后,说明虚拟机蜜罐和外部网络之间的网络连接(通过蜜网网关 eth0 和 eth1 所构成的网桥)没有问题。

第五节 Python教程学习


代码风格建议

  • 使用 4 个空格来缩进
  • 永远不要混用空格和制表符
  • 在函数之间空一行
  • 在类之间空两行
  • 字典,列表,元组以及参数列表中,在 , 后添加一个空格。对于字典,: 后面也添加一个空格
  • 在赋值运算符和比较运算符周围要有空格(参数列表中除外),但是括号里侧不加空格:a = f(1, 2) + g(3, 4)

应当明白如何使用交互模式的 Python3 解释器,如何简单使用 vim 编写脚本文件并执行这个脚本文件。要特别注意的是,Python 使用缩进来定义语句块,缩进是 Python 语法的一部分,这与其它大多数语言不同。
我是刚刚开始接触Python,感觉跟从C语言差距不大,但是语言风格更为简单。刚开始学习建Python脚本文件时,感觉挺困难的 ,步骤也挺繁琐,下面写一下步骤 ,加深自己的记忆。

  • 键入 vim 文件名.py,建立Python文件。
  • 按 i 键进入插入模式,可以看到左下角有 “插入” 两个字,现在可以键入下面的代码了。
  • 然其中第一行的前两个字符 #! 称为 Shebang ,目的是告诉 shell 使用 Python 解释器执行其下面的代码。
  • 然后按 Esc 键退出插入模式,再键入 :wq 回车,Vim 就会保存文件并退出。
  • 键入Python 文件名.py,可以运行程序,执行命令。
  • 再次键入vim 文件名.py,可以对程序进行修改。

下面是我第一次运行Python程序,虽然很简单,但是过程很坎坷。
2017-2018-2 20179216 《网络攻防与实践》第二周总结
2017-2018-2 20179216 《网络攻防与实践》第二周总结

字符串和数据结构

  • 首先我们建立了一个列表 a。然后调用列表的方法 a.append(45) 添加元素 45 到列表末尾。
  • 有些时候我们需要将数据插入到列表的任何位置,这时我们可以使用列表的 insert() 方法。
  • 列表方法 count(s) 会返回列表元素中 s 的数量。
  • 如果你想要在列表中移除任意指定值,你需要使用 remove() 方法。
  • 反转整个列表用reverse()方法。
  • 怎样将一个列表的所有元素添加到另一个列表的末尾呢,可以使用列表的 extend() 方法。
  • 给列表排序,我们使用列表的 sort() 方法,排序的前提是列表的元素是可比较的。
  • 也能使用 del 关键字删除指定位置的列表元素。
    程序实例:这是一个判断学生成绩是否达标的程序,要求输入学生数量,以及各个学生物理、数学、历史三科的成绩,如果总成绩小于 120,程序打印 “failed”,否则打印 “passed”
    2017-2018-2 20179216 《网络攻防与实践》第二周总结
    2017-2018-2 20179216 《网络攻防与实践》第二周总结

List(列表)
是 Python 中使用最频繁的数据类型。列表可以完成大多数集合类的数据结构实现。它支持字符,数字,字符串甚至可以包含列表(即嵌套)。从左到右索引默认 0 开始,从右到左索引默认 -1 开始,下标可以为空表示取到头或尾。如下图所示:
2017-2018-2 20179216 《网络攻防与实践》第二周总结

list = [ 'runoob', 786 , 2.23, 'john', 70.2 ]
tinylist = [123, 'john']
print list # 输出完整列表
print list[0] # 输出列表的第一个元素
print list[1:3] # 输出第二个至第三个元素
print list[2:] # 输出从第三个开始至列表末尾的所有元素
print tinylist * 2 # 输出列表两次
print list + tinylist # 打印组合的列表
输出结果
['runoob', 786, 2.23, 'john', 70.2]
runoob
[786, 2.23][2.23, 'john', 70.2]
[123, 'john', 123, 'john']['runoob', 786, 2.23, 'john', 70.2, 123, 'john']

下面是列表的一些常用操作
2017-2018-2 20179216 《网络攻防与实践》第二周总结
2017-2018-2 20179216 《网络攻防与实践》第二周总结

Python 字典
字典(dictionary)是除列表以外python之中最灵活的内置数据结构类型。列表是有序的对象集合,字典是无序的对象集合。两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取。字典用"{ }"标识。字典由索引(key)和它对应的值value组成。例如:
dict = {}
dict['one'] = "This is one"
dict[2] = "This is two"
tinydict = {'name': 'john','code':6734, 'dept': 'sales'}
print dict['one'] # 输出键为'one' 的值
print dict[2] # 输出键为 2 的值
print tinydict # 输出完整的字典
print tinydict.keys() # 输出所有键
print tinydict.values() # 输出所有值
结果:
This is one
This is two
{'dept': 'sales', 'code': 6734, 'name': 'john'}
['dept', 'code', 'name']['sales', 6734, 'john']

运算符
2017-2018-2 20179216 《网络攻防与实践》第二周总结
2017-2018-2 20179216 《网络攻防与实践》第二周总结
2017-2018-2 20179216 《网络攻防与实践》第二周总结

逻辑运算符
2017-2018-2 20179216 《网络攻防与实践》第二周总结

成员运算符
2017-2018-2 20179216 《网络攻防与实践》第二周总结

身份运算符
2017-2018-2 20179216 《网络攻防与实践》第二周总结
is 与 == 区别:
is 用于判断两个变量引用对象是否为同一个, == 用于判断引用变量的值是否相等。

数学运算符
2017-2018-2 20179216 《网络攻防与实践》第二周总结

Python函数
你可以定义一个由自己想要功能的函数,以下是简单的规则:

  • 函数代码块以 def 关键词开头,后接函数标识符名称和圆括号()。
  • 任何传入参数和自变量必须放在圆括号中间。圆括号之间可以用于定义参数。
  • 函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。
  • 函数内容以冒号起始,并且缩进。
  • return [表达式] 结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回 None

应用实例:计算两个矩阵的乘积
2017-2018-2 20179216 《网络攻防与实践》第二周总结
2017-2018-2 20179216 《网络攻防与实践》第二周总结

文件的I/O操作

  • raw_input([prompt]) 函数从标准输入读取一个行,并返回一个字符串(去掉结尾的换行符)。
  • input([prompt]) 函数和 raw_input([prompt]) 函数基本类似,但是 input 可以接收一个Python表达式作为输入,并将运算结果返回。
  • 先用Python内置的open()函数打开一个文件,创建一个file对象,相关的方法才可以调用它进行读写。
  • File 对象的 close()方法刷新缓冲区里任何还没写入的信息,并关闭该文件,这之后便不能再进行写入。当一个文件对象的引用被重新指定给另一个文件时,Python 会关闭之前的文件。用 close()方法关闭文件是一个很好的习惯。语法:fileObject.close();
  • write()方法可将任何字符串写入一个打开的文件。需要重点注意的是,Python字符串可以是二进制数据,而不是仅仅是文字。write()方法不会在字符串的结尾添加换行符('\n')。
  • read()方法从一个打开的文件中读取一个字符串。需要重点注意的是,Python字符串可以是二进制数据,而不是仅仅是文字。
  • 重命名rename()方法需要两个参数,当前的文件名和新文件名。语法:os.rename(current_file_name, new_file_name)
  • 你可以用remove()方法删除文件,需要提供要删除的文件名作为参数。语法:os.remove(file_name)
  • 可以使用os模块的mkdir()方法在当前目录下创建新的目录们。你需要提供一个包含了要创建的目录名称的参数。
  • 可以用chdir()方法来改变当前的目录。chdir()方法需要的一个参数是你想设成当前目录的目录名称。语法:os.chdir("newdir")
  • getcwd()方法显示当前的工作目录。
  • rmdir()方法删除目录,目录名称以参数传递。在删除这个目录之前,它的所有内容应该先被清除。

2017-2018-2 20179216 《网络攻防与实践》第二周总结

控制流if-else

if语句中要使用正确的缩进
elif是else if的缩写:if...: elif...: elif...: else...:
真值检测:if x:pass而非if x==true:pass

异常

  • try--except
    • 首先,执行 try 子句 ,如果没有异常发生,except 子句 在 try 语句执行完毕后就被忽略了。
    • 如果在 try 子句执行过程中发生了异常,那么该子句其余的部分就会被忽略。
    • 如果异常匹配于 except 关键字后面指定的异常类型,就执行对应的 except 子句。然后继续执行 try 语句之后的代码。
    • 如果发生了一个异常,在 except 子句中没有与之匹配的分支,它就会传递到上一级 try 语句中。
    • 如果最终仍找不到对应的处理语句,它就成为一个 未处理异常,终止程序运行,显示提示信息。
    • except可以处理一个专门的异常,也可以处理一组圆括号中的异常,如果except后没有指定异常,则默认处理所有的异常。
  • raise
    raise 语句抛出一个异常。如"挑战:玩转函数"中要求用户能够通过命令行输入分钟数,程序需要打印出相应的小时数和分钟数。如果用户输入的是一个负值,程序需要报错 ValueError,在屏幕上打印出ValueError: Input number cannot be negative 提示用户输入的值有误。

2017-2018-2 20179216 《网络攻防与实践》第二周总结

  • finally
    不管有没有发生异常,finally 子句在程序离开 try 后都一定会被执行。当 try 语句中发生了未被 except 捕获的异常(或者它发生在 except 或 else 子句中),在 finally 子句执行完后它会被重新抛出:
    2017-2018-2 20179216 《网络攻防与实践》第二周总结

总结内容

  • 在 Python 里,标识符由字母、数字、下划线组成。
  • 在 Python 中,所有标识符可以包括英文、数字以及下划线(_),但不能以数字开头。
  • Python 中的标识符是区分大小写的。
  • 每个缩进层次使用 单个制表符(Tab)或 两个空格 或 四个空格 , 切记不能混用
  • 可以使用斜杠( )将一行的语句分为多行显示
  • 语句中包含 [], {} 或 () 括号就不需要使用多行连接符
  • 单引号表示的字符串里可包含双引号,当然不能包含单引号
  • 双引号表示的字符串里可以包含单引号,字符串都只能有一行
  • 三个引号能包含多行字符串,同时常常出现在函数的声明的下一行,来注释函数的功能,与众不同的地方在于,这个注释作为函数的一个默认属性,可以通过 函数名.doc 来访问
  • python中单行注释采用 # 开头。
  • print 默认输出是换行的,如果要实现不换行需要在变量末尾加上逗号,或者加上end=' '

第六节 Kali视频1-5学习总结


1. kali安装
2017-2018-2 20179216 《网络攻防与实践》第二周总结
2017-2018-2 20179216 《网络攻防与实践》第二周总结

2. 渗透测试
完整的渗透测试流程如图所示
2017-2018-2 20179216 《网络攻防与实践》第二周总结
2017-2018-2 20179216 《网络攻防与实践》第二周总结

  • 完整的授权安全渗透测试流程
    • 信息收集
      这是选择目标的过程,也是对目标信息进行收集整理的过程。信息收集过程包括不限于目标在线主机、域名信息、邮箱地址、常用密码、同网段信息、子域名信息、指纹信息、端口信息、文件信息等。
      而这一过程大多借助搜索引擎、社会工程学和基本的扫描工具实现。
      只有建立在足够信息分析的基础上,渗透工作才能游刃有余。收集的信息越多,发现漏洞的几率越大。当然,对不同应用的信息收集的侧重点也不同。
      对于Web网站,你需要得到目标主机的服务器操作系统,Web服务器类型,Web后端语言,数据库系统等信息。
      对软件应用,更多的可能是关心应用程序本身是否存在某些漏洞如缓冲区溢出。

    • 漏洞分析
      在收集了足够的信息之后,我们要判断目标可能会存在哪些漏洞,这里需要搜索引擎搜索或借助通用的漏洞扫描器(如WEB漏洞扫描器WVS)来完成。
      通常使用搜索引擎可以得到比较直接的信息,比如我们在第一步中就知道对方站点使用WodePress搭建而成,则可通过Google搜索可能存在的插件漏洞,并针对性的进行利用测试。
      有很多专业记录漏洞信息的站点如Exploit-DB,里面有很多值得我们留意的最新漏洞信息。我们也可利用其进行针对性的漏洞扫描。此时专门的漏洞扫描工具比通用工具来的更实际和高效。
    • 漏洞利用
      得到漏洞信息后,基本都可以找到对应的攻击方法。Kali Linux中也提供了很多现成的工具,来帮助我们顺利的攻击目标。这一步包含两个方面:一是对心有漏洞进行利用,得到一定权限,二是提升自己的权限,简称提权。要注意,这个过程中要明确自己的目的,渗透测试和以破坏为目的的黑客行为是有区别的,渗透测试的目的是证明漏洞的存在,而不是搞破坏。对于攻击行为,还包括一个重要的内容,就是如何隐藏攻击行为或清除攻击日志。让对方很难通过反追踪技术查找到攻击者。
    • 权限维持
      权限维持,是指我们成功攻破一个系统后,继续保持对系统权限的控制,俗称留后门,通常会通过创建高权限的隐藏账户或者安装后门程序实现。
    • 文档编辑
      渗透测试最终简要将得到的信息、漏洞等归档化,这样会形成知识的积累。当然如果你即将成为专业的渗透测试工程师或者项目为渗透测试,那么标准文档更是必不可少的。

    • 其他相关项
      在Kali Linux分类目录中,以上没有提及无线攻击、密码攻击、嗅探攻击、逆向工程、数字取证几个目录,多也为渗透测试流程填砖。一如从无线网络渗透测试公司内网,则需要无线攻击审计部分

3. Kali信息收集之GooleHake

信息收集的方式:

  • 主动:直接访问、扫描网站(将流量流经网站的行为)
  • 被动:利用第三方的服务对目标进行访问了解,比例:Google搜索。

(1)通过互联网网站搜集信息
比如searchdns.netcraft.com搜到子域名信息,shodanhq大数据搜索,同IP网站反查、IP信息扫描,网站指纹信息,WHOis查询dns域名信息等。

(2)Google Hack
2017-2018-2 20179216 《网络攻防与实践》第二周总结

(3)theharvester
theharvester是一个社会工程学工具,它通过搜索引擎、PGP服务器以及SHODAN数据库收集用户的email,子域名,主机,雇员名,开放端口和banner信息。
2017-2018-2 20179216 《网络攻防与实践》第二周总结

(4)metagoofil
metagoofil可以收集 word、ppt、Excel、PDF 类型的信息

(5)recon-ng
根据收集方式不同分为侦察Reconnaissance、发现Discovery与汇报reporting模块:

  • 侦察:被动的信息收集方式,例如通过搜索引擎google hacker技巧收集目标的敏感信息
  • 发现:主动的信息收集方式,例如通过发送http请求包探测web服务指纹
  • 汇报:提供html和csv两种格式的报

2017-2018-2 20179216 《网络攻防与实践》第二周总结

4. Kali信息收集之目标获取
DNS(Domain Name System,域名系统)作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住IP数串。当用户输入域名时,DNS服务可以将该域名解析为与之相关的信息,如IP地址。DNS协议运行在UDP协议之上,使用端口号53。从给定的一个简单的主域名(主域名漏洞较少),到目标子域名的信息收集更有利于发现漏洞。

  • Dig 进行域名解析 dig www.baidu.com

2017-2018-2 20179216 《网络攻防与实践》第二周总结

  • Dig继行域传送漏洞测试
    dig获取目标域名使用的DNS服务器 dig NS 163.com
    2017-2018-2 20179216 《网络攻防与实践》第二周总结
  • DNS分析工具

(1)fierce :它是一种快速有效地DNS暴力破解的工具,先通过查询本地DNS服务器来查找目标DNS服务器,然后使用目标DNS服务器来查找子域名,然后利用字典进行攻击:
2017-2018-2 20179216 《网络攻防与实践》第二周总结

(2)dnsmap:可以直接进行扫描
2017-2018-2 20179216 《网络攻防与实践》第二周总结

(3)dnsenum:速度快,分类明显
2017-2018-2 20179216 《网络攻防与实践》第二周总结

第七节 学习中遇到的问题


  • 学习Python时,建立文件学了很久
  • Python语言中的数组与异常较为困难
  • 蜜网网关安装操作不熟练
  • vmtools安装出现一些问题
  • 对网络攻防工具的学习较为浅显,要学的还有很多