Linux内核转发技术
什么? linux? 内核?! 也许你会说,“拜托,这种一看就让人头大的字眼, 我真的需要了解吗?” 有句流行语说得好,没有买卖,就没有杀害. 如果在日常中需要和流量打交道,那么为了不让 自己在面对来往的海量数据时手足无措, 最好还是了解一下如何管理,过滤和转发这些数据, 让信息能被传递到该去的地方. 哪怕自己不去亲自参与管理, 也可以通过简单的了解, 让自己在围观时多一份自信,少一点懵逼.
什么? linux? 内核?! 也许你会说,“拜托,这种一看就让人头大的字眼, 我真的需要了解吗?” 有句流行语说得好,没有买卖,就没有杀害. 如果在日常中需要和流量打交道,那么为了不让 自己在面对来往的海量数据时手足无措, 最好还是了解一下如何管理,过滤和转发这些数据, 让信息能被传递到该去的地方. 哪怕自己不去亲自参与管理, 也可以通过简单的了解, 让自己在围观时多一份自信,少一点懵逼.
相信很多人对"Hook"都不会陌生,其中文翻译为"钩子".在编程中, 钩子表示一个可以允许编程者插入自定义程序的地方,通常是打包好的程序中提供的接口. 比如,我们想要提供一段代码来分析程序中某段逻辑路径被执行的频率,或者想要在其中 插入更多功能时就会用到钩子. 钩子都是以固定的目的提供给用户的,并且一般都有文档说明. 通过Hook,我们可以暂停系统调用,或者通过改变系统调用的参数来改变正常的输出结果, 甚至可以中止一个当前运行中的进程并且将控制权转移到自己手上.
Good people all, of every sort,
Give ear unto my song;
And if you find it wondrous short,
It cannot hold you long.
在前面几篇文章中我们介绍了建立p2p通信的一般协议(簇),以及一种完整的NAT传输解决方案ICE, 但是对于多用户的通信情况,还有一些通用协议来实现标准化的管理,如之前讲过的SDP和SIP等,SIP(Session Initiation Protocol), 是属于应用层的控制协议,主要用于在一个或多个参与者之间创建,修改和中止会话(sessions).会话的类型包括IP电话, 多媒体流分发和多媒体会议等.
在P2P通信标准协议(二)中,介绍了TURN的基本交互流程,在上篇结束部分也有说到,TURN作为STUN协议的一个拓展,保持了STUN的工具性质,而不作为完整的NAT传输解决方案,只提供穿透NAT的功能, 并且由具体的应用程序来使用.虽然TURN也可以独立工作,但其本身就是被设计为ICE/RFC5245的一部分,本章就来介绍一下ICE协议的具体内容.
上一篇P2P通信标准协议(一)介绍了在NAT上进行端口绑定的通用规则,应用程序可以根据这个协议来设计网络以外的通信。但是,STUN/RFC5389协议里能处理的也只有市面上大多数的Cone NAT(关于NAT类型可以参照P2P通信原理与实现),对于Symmetric NAT,传统的P2P打洞方法是不适用的。因此为了保证通信能够建立,我们可以在没办法的情况下用保证成功的中继方法(Relaying),虽然使用中继会对服务器负担加重,而且也算不上P2P,但是至少保证了最坏情况下信道的通畅,从而不至于受NAT类型的限制。TURN/RFC5766就是为此目的而进行的拓展。
前一段时间在P2P通信原理与实现中介绍了P2P打洞的基本原理和方法,我们可以根据其原理为自己的网络程序设计一套通信规则,当然如果这套程序只有自己在使用是没什么问题的。可是在现实生活中,我们的程序往往还需要和第三方的协议(如SDP,SIP)进行对接,因此使用标准化的通用规则来进行P2P链接建立是很有必要的。本文就来介绍一下当前主要应用于P2P通信的几个标准协议,主要有STUN/RFC3489,STUN/RFC5389,TURN/RFC5766以及ICE/RFC5245。
最近无意间发现一个基于ArchLinux的发行版——BlackArch,主题十分炫酷(中二)。当然渗透类的Linux发行版已经有BackTrack和Kali了,不过都是源于Debian的,使用者众多,随波逐流无法突显我们的逼格,要论小众,ArchLinux算是个中翘楚。呵呵开个玩笑,其实ArchLinux的亮点在于“小”,不同于其他发行版的“最小化安装”,ArchLinux的安装过程需要手动分区,手动配置bootloader,然后从网络源下载必要的包安装到指定的分区中。
安装完必备的软件(如gcc)后其余一概自己去添加,包括图形界面。对于喜欢定制而又不怕折腾的朋友来说,Arch系列确实是一个不错的选择。正好我还没有用过Arch系的发行版,因此就在虚拟机装一个体验一回,顺便把其中遇到的坑记录一下。
前面几篇文章已经介绍了常见的中间人攻击方式,即窃听、修改和重定向(钓鱼)。当然这都是建立在我们完全掌握了局域网的所有流量的前提下的。在ARP欺骗与中间人攻击中就已经介绍了一种最简单的一种控制流量的方法,即ARP欺骗。但是ARP的方式往往对网络的负载造成较大压力,从而对别人的网速造成影响不说,如果目标稍微有点意识,也能很容易发现和防御ARP攻击。因此我们需要其他更多的选择来成为中间人,本文就来介绍一下各种不同的中间人方式。
在细说中间人攻击(一)介绍了比较常见的中间人攻击做法,即用wireshark抓取数据包,用ettercap来进行出入流量的替换和修改,从而达到监控和修改目标网页的目的。然而中间人攻击的工具繁多,并非只有ettercap一个,因此这篇博文我将再介绍几种常见的MITM框架以及简单说明其使用方法,以达到方便监控目标和攻击目标的目的。