网络安全、Web安全、渗透测试之笔经面经总结(二)

这篇文章涉及的知识点有以下几方面:html

1.SSL Strip(SSp)攻击究竟是什么?linux

2.中间人攻击——ARP欺骗的原理、实战及防护android

3会话劫持原理算法

4.CC攻击chrome

5.添加时间戳防止重放攻击数据库

6.浅析HTTPS中间人攻击与证书校验windows

7.什么是HttpOnly?浏览器

8.如何设计相对安全的cookie自动登陆系统缓存

9. SSH安全

10.服务器操做系统的安全防范

11. 日志文件查看

12.localStorage和sessionStorage区别

13.简单的查找旁站

 

 

 

1.SSL Strip(SSp)攻击究竟是什么?

SSL协议(Secure Socket Layer,安全套接层)主要是使用公开密钥体制和X.509数字证书技术保护信息传输的机密性和完整性,它不能保证信息的不可抵赖性,主要适用于点对点之间的信息传输,经常使用Web Server方式。

详细解释http://hover.blog.51cto.com/258348/218841

2.中间人攻击——ARP欺骗的原理、实战及防护

什么是网关

首先来简单解释一下什么是网关,网关工做在OSI七层模型中的传输层或者应用层,用于高层协议的不一样网络之间的链接,简单地说,网关就比如是一个房间通向另外一个房间的一扇门。

 ARP协议是什么

ARP(Address Resolution Protocol)地址转换协议,工做在OSI模型的数据链路层,在以太网中,网络设备之间互相通讯是用MAC地址而不是IP地址,ARP协议就是用来把IP地址转换为MAC地址的。而RARP和ARP相反,它是反向地址转换协议,把MAC地址转换为IP地址。

假设A(192.168.1.2)与B(192.168.1.3)在同一局域网,A要和B实现通讯。A首先会发送一个数据包到广播地址(192.168.1.255),该数据包中包含了源IP(A)、源MAC、目的IP(B)、目的MAC,这个数据包会被发放给局域网中全部的主机,可是只有B主机会回复一个包含了源IP(B)、源MAC、目的IP(A)、目的MAC的数据包给A,同时A主机会将返回的这个地址保存在ARP缓存表中。

ARP欺骗原理

上面提到过了ARP缓存表,在每台主机都有一个ARP缓存表,缓存表中记录了IP地址与MAC地址的对应关系,而局域网数据传输依靠的是MAC地址。

假设主机 A 192.168.1.2,B 192.168.1.3,C 192.168.1.4; 网关 G 192.168.1.1; 在同一局域网,主机A和B经过网关G相互通讯,就比如A和B两我的写信,由邮递员G送信,C永远都不会知道A和B之间说了些什么话。可是并非想象中的那么安全,在ARP缓存表机制存在一个缺陷,就是当请求主机收到ARP应答包后,不会去验证本身是否向对方主机发送过ARP请求包,就直接把这个返回包中的IP地址与MAC地址的对应关系保存进ARP缓存表中,若是原有相同IP对应关系,原有的则会被替换。

这样C就有了偷听A和B的谈话的可能,继续思考上面的例子:

C假扮邮递员,首先要告诉A说:“我就是邮递员” (C主机向A发送构造好的返回包,源IP为G 192.168.1.1,源MAC为C本身的MAC地址),愚蠢的A很轻易的相信了,直接把“C是邮递员”这个信息记在了脑子里;

C再假扮A,告诉邮递员:“我就是A” (C向网关G发送构造好的返回包,源IP为A 192.168.1.2,源MAC地址为本身的MAC地址),智商捉急的邮递员想都没想就相信了,之后就把B的来信送给了C,C固然就能够知道A和B之间聊了些什么

上面ABCG的故事就是ARP双向欺骗的原理了

ARP单向欺骗就更好理解了,C只向A发送一个返回包,告诉A:G 192.168.1.1 的MAC地址为 5c-63-bf-79-1d-fa(一个错误的mac地址),A把这个信息记录在了缓存表中,而G的缓存表不变,也就是说,A把数据包给了C,而G的包仍是给A,这样就是ARP单向欺骗了。

3会话劫持原理

什么是会话劫持

在现实生活中,好比你去市场买菜,在交完钱后你要求先去干一些别的事情,稍候再来拿菜;若是这个时候某个陌生人要求把菜拿走,卖菜的人会把菜给陌生人吗?!固然,这只是一个比喻,但这偏偏就是会话劫持的喻意。所谓会话,就是两台主机之间的一次通信。例如你Telnet到某台主机,这就是一次Telnet会话;你浏览某个网站,这就是一次HTTP会话。而会话劫持(Session Hijack),就是结合了嗅探以及欺骗技术在内的攻击手段。例如,在一次正常的会话过程中,攻击者做为第三方参与到其中,他能够在正常数据包中插入恶意数据,也能够在双方的会话当中进行简听,甚至能够是代替某一方主机接管会话。咱们能够把会话劫持攻击分为两种类型:1)中间人攻击(Man In The Middle,简称MITM),2)注射式攻击(Injection);而且还能够把会话劫持攻击分为两种形式:1)被动劫持,2)主动劫持;被动劫持实际上就是在后台监视双方会话的数据流,丛中得到敏感数据;而主动劫持则是将会话当中的某一台主机“踢”下线,而后由攻击者取代并接管会话,这种攻击方法危害很是大,攻击者能够作不少事情,好比“cat etc/master.passwd”(FreeBSD下的Shadow文件)。图1为会话劫持示意图。

 

MITM攻击简介

这也就是咱们常说的“中间人攻击”,在网上讨论比较多的就是SMB会话劫持,这也是一个典型的中间人攻击。要想正确的实施中间人攻击,攻击者首先须要使用ARP欺骗或DNS欺骗,将会话双方的通信流暗中改变,而这种改变对于会话双方来讲是彻底透明的。关于ARP欺骗黑客防线介绍的比较多,网上的资料也比较多,我就不在多说了,我只简单谈谈DNS欺骗。DNS(Domain Name System),即域名服务器,咱们几乎每天都要用到。对于正常的DNS请求,例如在浏览器输入www.hacker.com.cn,而后系统先查看Hosts文件,若是有相对应的IP,就使用这个IP地址访问网站(其实,利用Hosts文件就能够实现DNS欺骗);若是没有,才去请求DNS服务器;DNS服务器在接收到请求以后,解析出其对应的IP地址,返回给我本地,最后你就能够登录到黑客防线的网站。而DNS欺骗则是,目标将其DNS请求发送到攻击者这里,而后攻击者伪造DNS响应,将正确的IP地址替换为其余IP,以后你就登录了这个攻击者指定的IP,而攻击者早就在这个IP中安排好了恶意网页,可你却在不知不觉中已经被攻击者下了“套”……DNS欺骗也能够在广域网中进行,比较常见的有“Web服务器重定向”、“邮件服务器重定向”等等。但无论是ARP欺骗,仍是DNS欺骗,中间人攻击都改变正常的通信流,它就至关于会话双方之间的一个透明代理,能够获得一切想知道的信息,甚至是利用一些有缺陷的加密协议来实现。

 

注射式攻击简介

这种方式的会话劫持比中间人攻击实现起来简单一些,它不会改变会话双方的通信流,而是在双方正常的通信流插入恶意数据。在注射式攻击中,须要实现两种技术:1)IP欺骗,2)预测TCP序列号。若是是UDP协议,只需伪造IP地址,而后发送过去就能够了,由于UDP没有所谓的TCP三次握手,但基于UDP的应用协议有流控机制,因此也要作一些额外的工做。对于IP欺骗,有两种状况须要用到:1)隐藏本身的IP地址;2)利用两台机器之间的信任关系实施入侵。在Unix/Linux平台上,能够直接使用Socket构造IP包,在IP头中填上虚假的IP地址,但须要root权限;在Windows平台上,不能使用Winsock,须要使用Winpacp(也可使用Libnet)。例如在Linux系统,首先打开一个Raw Socket(原始套接字),而后本身编写IP头及其余数据。

4.CC攻击

攻击者借助代理服务器生成指向受害主机的合法请求,实现DDOS,和假装就叫:CC(ChallengeCollapsar)。

CC主要是用来攻击页面的。你们都有这样的经历,就是在访问论坛时,若是这个论坛比较大,访问的人比较多,打开页面的速度会比较慢,访问的人越多,论坛的页面越多,数据库就越大,被访问的频率也越高,占用的系统资源也就至关可观。

一个静态页面不须要服务器多少资源,甚至能够说直接从内存中读出来发给你就能够了,可是论坛就不同了,我看一个帖子,系统须要到数据库中判断我是否有读帖子的权限,若是有,就读出帖子里面的内容,显示出来——这里至少访问了2次数据库,若是数据库的数据容量有200MB大小,系统极可能就要在这200MB大小的数据空间搜索一遍,这须要多少的CPU资源和时间?若是我是查找一个关键字,那么时间更加可观,由于前面的搜索能够限定在一个很小的范围内,好比用户权限只查用户表,帖子内容只查帖子表,并且查到就能够立刻中止查询,而搜索确定会对全部的数据进行一次判断,消耗的时间是至关的大。

CC就是充分利用了这个特色,模拟多个用户(多少线程就是多少用户)不停的进行访问(访问那些须要大量数据操做,就是须要大量CPU时间的页面).这一点用一个通常的性能测试软件就能够作到大量模拟用户并发。

5.添加时间戳防止重放攻击

如过客户端在向服务端接口进行请求,若是请求信息进行了加密处理,被第三方截取到请求包,虽然第三方没法解密获取其中的数据,可是可使用该请求包进行重复的请求操做。若是服务端不进行防重放攻击,就会参数服务器压力增大,数据紊乱的后果。而使用添加时间戳的方式能够解决这一问题。。

6.浅析HTTPS中间人攻击与证书校验

http://www.2cto.com/article/201607/523509.html

证书是https里很是重要的主体,可用来识别对方是否可信,以及用其公钥作密钥交换。能够看见证书里面包含证书的颁发者,证书的使用者,证书的公钥,颁发者的签名等信息。其中Issuer Name是签发此证书的CA名称,用来指定签发证书的CA的可识别的惟一名称(DN, Distinguished Name),用于证书链的认证,这样经过各级实体证书的验证,逐渐上溯到链的终止点,便可信任的根CA,若是到达终点在本身的信任列表内未发现可信任的CA则认为此证书不可信。

https握手过程的证书校验环节就是为了识别证书的有效性惟一性等等,因此严格意义上来讲https下不存在中间人攻击,存在中间人攻击的前提条件是没有严格的对证书进行校验,或者人为的信任伪造证书,下面一块儿看下几种常见的https“中间人攻击”场景。

证书未校验

因为客户端没有作任何的证书校验,因此此时随意一张证书均可以进行中间人攻击,可使用burp里的这个模块进行中间人攻击。

经过浏览器查看实际的https证书,是一个自签名的伪造证书。

部分校验

作了部分校验,例如在证书校验过程当中只作了证书域名是否匹配的校验,可使用burp的以下模块生成任意域名的伪造证书进行中间人攻击。

实际生成的证书效果,若是只作了域名、证书是否过时等校验可轻松进行中间人攻击(因为chrome是作了证书校验的因此会提示证书不可信任)。

证书链校验

若是客户端对证书链作了校验,那么攻击难度就会上升一个层次,此时须要人为的信任伪造的证书或者安装伪造的CA公钥证书从而间接信任伪造的证书,可使用burp的以下模块进行中间人攻击。

能够看见浏览器是会报警告的,由于burp的根证书PortSwigger CA并不在浏览器可信任列表内,因此由它做为根证书签发的证书都是不能经过浏览器的证书校验的,若是将PortSwigger CA导入系统设置为可信任证书,那么浏览器将不会有任何警告。

手机客户端Https数据包抓取

上述第1、二种状况很少加赘述,第三种状况就是咱们常用的抓手机应用https数据包的方法,即导入代理工具的公钥证书到手机里,再进行https数据包的抓取。导入手机的公钥证书在android平台上称之为受信任的凭据,

能够看见是Issuer和Subject同样的自签名CA公钥证书,另外咱们也能够经过证书类型就能够知道此为公钥证书,crt、der格式的证书不支持存储私钥或证书路径(有兴趣的同窗可查找证书相关信息)。导入CA公钥证书以后,参考上文的证书校验过程不难发现经过此方式能经过证书链校验,从而造成中间人攻击,客户端使用代理工具的公钥证书加密随机数,代理工具使用私钥解密并计算获得对称加密密钥,再对数据包进行解密便可抓取明文数据包。

中间人攻击原理

一直在说中间人攻击,那么中间人攻击究竟是怎么进行的呢,下面咱们经过一个流行的MITM开源库mitmproxy来分析中间人攻击的原理。中间人攻击的关键在于https握手过程的ClientKeyExchange,因为pre key交换的时候是使用服务器证书里的公钥进行加密,若是用的伪造证书的公钥,那么中间人就能够解开该密文获得pre_master_secret计算出用于对称加密算法的master_key,从而获取到客户端发送的数据;而后中间人代理工具再使用其和服务端的master_key加密传输给服务端;一样的服务器返回给客户端的数据也是通过中间人解密再加密,因而完整的https中间人攻击过程就造成了,一图胜千言,来吧。

App证书校验

经过上文第一和第二部分的说明,相信你们已经对https有个大概的了解了,那么问题来了,怎样才能防止这些“中间人攻击”呢?

app证书校验已是一个老生常谈的问题了,可是市场上仍是有不少的app未作好证书校验,有些只作了部分校验,例如检查证书域名是否匹配证书是否过时,更多数的是根本就不作校验,因而就形成了中间人攻击。作证书校验须要作彻底,只作一部分都会致使中间人攻击,对于安全要求并非特别高的app可以使用以下校验方式:

查看证书是否过时 服务器证书上的域名是否和服务器的实际域名相匹配, 校验证书链。

7什么是HttpOnly?

 若是您在cookie中设置了HttpOnly属性,那么经过js脚本将没法读取到cookie信息,这样能有效的防止XSS攻击

8如何设计相对安全的cookie自动登陆系统

http://blog.sina.com.cn/s/blog_90cbd0ab0101ew0p.html

这种技术其实就是基于 cookie的自动登陆,用户登陆的时候会把须要验证的token写到cookie里面,当用户session失效的时候,token会经过cookie 发送给服务器端,服务器端解析token判断是否已经登陆;这里面的token如何设计是关键,到底存什么数据才能保证系统的安全性呢?

有些新手可能会想,把用户id和password直接md5加密存到cookie,这样作是最糟糕的设计,用户的敏感信息直接暴露出来,黑客能够伪造别人的id进行尝试性登陆,能够想象黑客知道了admin帐号的id,试过几千几万次,密码和加密算法极可能破解出来。

token要相对安全,不该该是简单的用户名和密码md5加密,用户密码其实彻底能够不用存进去,分两步来作:

1)token 是一些信息的组合,用户id+用户名+expires过时时间+ip地址+salt,具体加密算法最好本身写,不能使是常见的加密函数(md5),固然这 个加密函数必须可逆,这个token咱们同时要保存在用户表数据库里面,set cookie的时候记得http only;

2) 服务器端拿到cookie以后,进行逆解析,这个时候咱们要验证以下信息:cookie是否过时、ip地址是否发生变化、用户id和用户名是否存在;用户 存在以后,咱们再拿这个token跟第一步存在数据库中的token进行比较,看是否相等,若是不等说明token已通过期,这样作可保证每次用户登陆之 后token值都不同,以前用过的token都会失效;

9 SSH

SSH 为 Secure Shell 的缩写,由 IETF 的网络小组(Network Working Group)所制定;SSH 为创建在应用层基础上的安全协议。SSH 是目前较可靠,专为远程登陆会话和其余网络服务提供安全性的协议。利用 SSH 协议能够有效防止远程管理过程当中的信息泄露问题。

10服务器操做系统的安全防范

中止运行不须要的软件;(极可能成为外部攻击的入口)

按期实施漏洞防范措施;(选定软件时确认软件的升级情况,肯定打补丁方式,关注各类漏洞信息,确认漏洞后调查补丁情况以及防范对策,并制定对应计划)

对不须要对外公开的端口或者服务加以访问限制;(经过端口扫描确认各端口服务状态)

提升认证强度。

11 日志文件查看

windows7的日志信息文件存放在C:windows-》System32-》winevt-》Logs文件夹下,对应的日志文件也有不少,而且文件格式都是evtx格式的文件,直接用Eventvwr.msc这个命令启用事件查看器来查看便可。

或者点击开始而后单击控制面板进入win7控制面板,单击“系统和安全”选项。在右下方找到“查看事件日志”进入windows系统日志查看器。

在日志查看器左侧能够选择查看不一样类型日志,通常系统报错应该在“windows日志/系统”中找相关信息。双击单条日志能够查看详细信息,而右侧栏能够对日志进行删除、复制等操做。

12.localStorage和sessionStorage区别

http://www.cnblogs.com/tylerdonet/p/4833681.html

http://www.2cto.com/article/201505/401601.html

localStorage和sessionStorage同样都是用来存储客户端临时信息的对象。

他们均只能存储字符串类型的对象(虽然规范中能够存储其余原生类型的对象,可是目前为止没有浏览器对其进行实现)。

localStorage生命周期是永久,这意味着除非用户显示在浏览器提供的UI上清除localStorage信息,不然这些信息将永远存在。

sessionStorage生命周期为当前窗口或标签页,一旦窗口或标签页被永久关闭了,那么全部经过sessionStorage存储的数据也就被清空了。

不一样浏览器没法共享localStorage或sessionStorage中的信息。相同浏览器的不一样页面间能够共享相同的 localStorage(页面属于相同域名和端口),可是不一样页面或标签页间没法共享sessionStorage的信息。这里须要注意的是,页面及标 签页仅指顶级窗口,若是一个标签页包含多个iframe标签且他们属于同源页面,那么他们之间是能够共享sessionStorage的。

13简单的查找旁站

百度 域名查找IP 打开可行的网页,在里面输入目标域名,搜索出服务器的IP,而后百度 IP反查域名 选择一个可行的网页打开,输入刚刚查询到的IP,旁站就统统出来了。 目标站无法子入侵不表明旁站也同样。

相关文章
相关标签/搜索