渗透测试者必备的基本技能有哪些

       随着国内外重大信息安全事故数量的急剧增长,安全在整个IT行业中的不断升温,国内外渗透测试从业者也不断的增多,但是安全体系庞大复杂,并非朝夕就能掌握相关的专业知识和技能。最近在国外的一篇博客上看见一位安全专家根据他多年的安全从业经验,对渗透测试者所需要的必备做出了一些总结,因为语言的不同,可能翻译理解会有所纰漏,希望大家指出修正,谢谢!
    1、精通一个操作系统。我不想强调这个有多么重要。太多的人们都想成为一个黑客或者系统安全专家,但是事实上却没有对支持他们进行黑客攻击和安全防护的系统有较为深入的了解。但是如果你戴着一顶系统管理员的帽子的话,这是必定最基本的常识。作为一个黑客来说,就算你拿到了root权限,但是却不知道它有什么用就意味着什么事情都没有干。如果你不知道你在系统中留下了那些蛛丝马迹,怎么能有办法将它们擦除掉呢?如果你对系统没有足够的了解,你怎么知道所有的事情是怎么被记入日志的?
    2、良好的网络知识和协议知识。能够例举出OSI模型并能证明对网络和协议比较了解。你需要深入的理解TCP协议,并不只是知道它代表传输控制协议,你需要知道TCP包的结构和里面所装载的内容以及其工作的详细过程。另外,TCP和UDP的区别;了解路由,能够详细的描述一个包是怎样从一个地方发往另一个地方的;深入理解DNS,ARP是怎么工作的;了解DHCP,了解你终端是怎么动态获得IP地址的,想想当你插入网线的时候发生了什么?在你插入网线尝试获得一个动态分配的IP地址的时候,NIC 建立了什么类型的通路?是第二层?还是第三层?
    3、如果你不理解上面第二点所说的话,你就不太可能理解ARP欺骗(ARP Spoof)和中间人攻击(MITM)是怎么实施的。简而言之,如果你不知道一个进程是怎么工作的你怎么知道攻击和操作这个进程,甚至更糟糕的是,你根本不知道有怎么一个进程存在着。这让我们不得不记住一点,通常你应该对事物是怎么工作的有足够的求知欲,每当我们看见一些很不错的东西的时候我都该在脑子中快速的转动,他是怎么工作的呢?
    4、学习几种基本的脚本语言。从一些简单的开始,比如说:vbs或Bash。
    5、了解一个基本的防火墙。学习怎么配置它来达到访问控制的目的,之后试着打败它。你可以找一个廉价的或者用过的路由器和防火墙做实验,去买一个或者向你的公司要一个旧的。从简单的配置访问控制表开始,学习怎么样通过简单的IP欺骗和其他基本的技术来扫描他们。你除了应用他们才能更深入的理解这些概念。一旦掌握了这些,你就可以转向PIX或ASA。
    6、对取证有一定的了解。这会更好的掩盖你踪迹, 这对你的影响是显然的。
    7、好好的学习一门编程语言。找出你想让它自动化完成的东西或者一些简单的你想创造的东西。比如端口扫描,你可以找一些类似的工具,看看它们的源代码,试着做出自己的端口扫描工具。
    8、有一个明确的目标驱动自己去学习新的东西。这比其他所有的都重要,因为你要把自己的时间投入在上面并且随时都保持热情。
    9、学习少量的数据库。学习数据库并了解它们是怎么工作的,下载各种数据库看看,查找资料并试着设计一个简单的数据库,不用成为数据库专家,了解基本知识将有很大的帮助。
    10、保持与人分享交流的热情。最好是建立自己的博客记录下自己的学习过程。