《信息安全技术》实践总结
wireshark的安装与使用
wireshark的安装
-
首先,在终端运行:sudo apt-get install wireshark,进行wireshark的安装;
-
安装完成之后,如果直接用:sudo wireshark指令启动wireshark,就会弹出错误:
-
错误提示:[string "/usr/share/wireshark/init.lua"]:44: dofile has been disabled,所以要对其进行修改,终端运行:sudo gedit /usr/share/wireshark/init.lua,将倒数第二行修改为--dofile(DATA_DIR.."console.lua");
-
此时再次在终端运行:sudo wireshark启动wireshark,这时就可以正常启动了。
wireshark的使用
-
wireshark打开后的界面如图所示:
-
先进行个简单的抓包,点击捕获选项,选择网络接口之后点击开始:
-
此时wireshark已经开始监听,随便点开一个网站,会发现抓了许多包:
-
这个时候已经抓包成功了,但是为了在几千甚至几万条记录中找到自己需要的部分,我们可以利用过滤器来帮助我们在大量的数据中迅速找到我们需要的信息。过滤器分两种,一种是显示过滤器,就是主界面上那个,用来在捕获的记录中找到所需要的记录,另一种是捕获过滤器,用来过滤捕获的封包,以免捕获太多的记录。我用的是显示过滤器,显示过滤器需要输入表达式,表达式的规则网上都有,比较简单,例如要查找IP源地址为192.168.1.1的信息,直接输入表达式:ip.src==192.168.1.1即可
HTTP协议
-
HTTP是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。它于1990年提出,经过几年的使用与发展,得到不断地完善和扩展。目前在WWW中使用的是HTTP/1.0的第六版,HTTP/1.1的规范化工作正在进行之中,而且HTTP-NG(Next Generation of HTTP)的建议已经提出。
-
HTTP协议的主要特点可概括如下:
- 支持客户/服务器模式。
- 简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。
- 灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。
- 无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。
- 无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。
-
HTTP协议工作过程可分为四步:
- 首先客户机与服务器需要建立连接。只要单击某个超级链接,HTTP的工作开始。
- 建立连接后,客户机发送一个请求给服务器,请求方式的格式为:统一资源标识符(URL)、协议版本号,后边是MIME信息包括请求修饰符、客户机信息和可能的内容。
- 服务器接到请求后,给予相应的响应信息,其格式为一个状态行,包括信息的协议版本号、一个成功或错误的代码,后边是MIME信息包括服务器信息、实体信息和可能的内容。
- 客户端显示响应消息然后客户机与服务器断开连接。 如果在以上过程中的某一步出现错误,那么产生错误的信息将返回到客户端,有显示屏输出。对于用户来说,这些过程是由HTTP自己完成的,用户只要用鼠标点击,等待信息显示就可以了。
TCP协议
- 传输层主要是包含两个协议,即TCP和UDP协议。基于TCP协议的上层协议包括SMTP,Telnet,HTTP,FTP等,TCP是面向连接的。TCP协议的特点是:
- 面向连接
- 点对点(一对一)
- 可靠交付
- 面向字节流,也就是说仅仅把上层协议传递过来的数据当成字节传输。
- 为了实现TCP上述的特点,TCP协议需要解决的是面向连接(建立连接和关闭连接的方式)、可靠传输(错误确认和重传)、流量控制(发送方和接收方的传输速率协调)、拥塞控制四个方面。
捕获TCP三次握手
-
TCP建立连接时,会有三次握手过程,如下图所示,wireshark截获到了三次握手的三个数据包。第四个包才是http的,说明http的确是使用TCP建立连接的
-
第一次握手:客户端向服务器发送连接请求包,标志位SYN(同步序号)置为1,序号为X=0
-
第二次握手:服务器收到客户端发过来报文,由SYN=1知道客户端要求建立联机。向客户端发送一个SYN和ACK都置为1的TCP报文,设置初始序号Y=0,将确认序号(Acknowledgement Number)设置为客户的序列号加1,即X+1 = 0+1=1, 如下图:
-
第三次握手:客户端收到服务器发来的包后检查确认序号(Acknowledgement Number)是否正确,即第一次发送的序号加1(X+1=1)。以及标志位ACK是否为1。若正确,服务器再次发送确认包,ACK标志位为1,SYN标志位为0。确认序号(Acknowledgement Number)=Y+1=0+1=1,发送序号为X+1=1。客户端收到后确认序号值与ACK=1则连接建立成功,可以传送数据了
《戏说春秋》前三关write up
第一关 图穷匕见
-
首先看到图片,第一反应就是先把图片保存到本地,然后右键查看其属性,看看里面是否存在一些有价值的线索,看完之后发现并没有。接着又尝试着用记事本打开,在一堆乱七八糟的符号之后,在最后一行发现了一串比较整齐的字符。
-
看到有很多%就会联想到这是url编码,于是直接在百度上搜索url在线解码,随便选择一个打开,将这串字符粘进去解码即可得到flag。
第二关 纸上谈兵
-
看到这一关没有图片,习惯性的右键查看源代码,在源代码中发现如下重要信息:
-
根据提示很容易就知道这是base64编码,直接用工具解码得到flag即可。
第三关 窃符救赵
-
和第一题一样,将图片保存到本地之后,经过几种方法的尝试都没有找到有价值的信息。突然想到之前做过的一道题目,于是将图片后缀名改成了zip,发现压缩包里有一张dh.jpg图片
-
打开之后发现是一张虎符的图片:
-
但是我并不知道这是一个什么样的虎符,flag也绝不可能仅仅是虎符这么简单,于是在百度上搜了一下虎符,点开百度百科,发现了一张和上图中的虎符一模一样的图片:
-
答案就显而易见了,这是一个杜虎符。
重放攻击的实现
-
本次进行重放攻击采用的工具是Burp Suite,利用Burp Suite进行抓包需要先设置代理,找到ProxyOptions,勾选代理服务器填写地址127.0.0.1端口8080,端口可以随便定义但是要跟burp的监听端口要一致然后保存,如图所示:
-
再在浏览器上设置代理服务器(各浏览器设置的方式不一样,可以自行百度),设置完成后效果如图:
-
接着就可以进行抓包分析了,我们主要要用到的就是Proxy(代理)功能,Proxy相当于Burp Suite的心脏,通过拦截,查看和修改所有的请求和响应浏览器与目标Web服务器之间传递,当intercept is on表示开启拦截功能:
-
首先,我进行了实验楼的抓包分析,我把网页定格在了登录页面:
-
然后设置好浏览器代理后,登录,这时burpsuite已经成功抓到了一个post包,这个包里包含了登陆的用户名及密码,并且采用的是明文数据传输:
-
接着把这个包send to repeater,再重新发送一次这个包,提示应该自动重定向到目标网址,说明重放攻击失败,应该是实验楼的网站做了防止重放攻击的操作:
-
因此,我决定重新再找一个网站尝试重放攻击,于是找到了4399小游戏网站,基本操作和上述类似,抓包之后发现用户名和密码依旧是采用的明文传输:
-
重新发送数据包后,发现其响应的信息跳转到了下一个界面:
-
说明这个网站可以实现重放攻击。