教材内容总结
一、Linux操作系统基本框架概述
Linux发展现状
Linux 作为一种操作系统正在拥有越来越多的用户,也逐渐被应用于更多的领域。随着Linux 的快速发展,并且凭借着诸多优点,Linux 正逐步在打破Windows 的垄断地位。就Linux 的本质来说,它只是操作系统的核心,负责控制硬件、管理文件系统、程序进程等。Linux Kernel(内核)并不负责提供用户强大的应用程序,没有编译器、系统管理工具、网络工具、Office 套件、多媒体、绘图软件等,这样的系统也就无法发挥其强大功能,用户也无法利用这个系统工作,因此有人便提出以Linux Kernel 为核心再集成搭配各式各样的系统程序或应用工具程序组成一套完整的操作系统,经过如此组合的Linux 套件即称为Linux 发行版。
Linux系统结构 Linux 和 Unix 文件系统被组织成一个有层次的树形结构。文件系统的最上层是 /,或称为 根目录。在 Unix 和 Linux 的设计理念中,一切皆为文件——包括硬盘、分区和可插拔介质。这就意味着所有其它文件和目录(包括其它硬盘和分区)都位于根目录中。例如:/home/jebediah/cheeses.odt 给出了正确的完整路径,它指向 cheeses.odt 文件,而该文件位于 jebediah 目录下,该目录又位于 home 目录,最后,home 目录又位于根(/) 目录下。 在根 (/) 目录下,有一组重要的系统目录,在大部分 Linux 发行版里都通用。
二、Linux操作系统安全机制
经过十年的发展,Linux的功能在不断增强,其安全机制亦在逐步完善。按照TCSEC评估标准,目前Linux的安全级基本达到了C2,更高安全级别的Linux系统正在开发之中。下面我们来看一看Linux已有的安全机制,这些机制有些已被标准的Linux所接纳,有些只是提供了“补丁”程序。
PAM机制
PAM(Pluggable Authentication Modules)是一套共享库,其目的是提供一个框架和一套编程接口,将认证工作由程序员交给管理员,PAM允许管理员在多种认证方法之间作出选择,它能够改变本地认证方法而不需要重新编译与认证相关的应用程序。
PAM的功能包括:
加密口令(包括DES以外的算法);
对用户进行资源限制,防止DOS攻击;
允许随意Shadow口令;
限制特定用户在指定时间从指定地点登录;
引入概念“client plug-in agents”,使PAM支持C/S应用中的机器——机器认证成为可能。
PAM为更有效的认证方法的开发提供了便利,在此基础上可以很容易地开发出替代常规的用户名加口令的认证方法,如智能卡、指纹识别等认证方法。
入侵检测系统
入侵检测技术是一项相对比较新的技术,很少有操作系统安装了入侵检测工具,事实上,标准的Linux发布版本也是最近才配备了这种工具。尽管入侵检测系统的历史很短,但发展却很快,目前比较流行的入侵检测系统有Snort、Portsentry、 Lids等。
利用Linux配备的工具和从因特网下载的工具,就可以使Linux具备高级的入侵检测能力,这些能力包括:
记录入侵企图,当攻击发生时及时通知管理员;
在规定情况的攻击发生时,采取事先规定的措施;
发送一些错误信息,比如伪装成其他操作系统,这样攻击者会认为他们正在攻击一个Windows NT 或Solaris系统。
加密文件系统
加密技术在现代计算机系统安全中扮演着越来越重要的角色。加密文件系统就是将加密服务引入文件系统,从而提高计算机系统的安全性。有太多的理由需要加密文件系统,比如防止硬盘被偷窃、防止未经授权的访问等。
目前Linux已有多种加密文件系统,如CFS、TCFS、CRYPTFS等,较有代表性的是TCFS(Transparent CryptogrAPhic File System)。它通过将加密服务和文件系统紧密集成,使用户感觉不到文件的加密过程。TCFS不修改文件系统的数据结构,备份与修复以及用户访问保密文件的语义也不变。
TCFS能够做到让保密文件对以下用户不可读:
合法拥有者以外的用户;
用户和远程文件系统通信线路上的偷听者;
文件系统服务器的超级用户。
而对于合法用户,访问保密文件与访问普通文件几乎没有区别。
安全审计
即使系统管理员十分精明地采取了各种安全措施,但还会不幸地发现一些新漏洞。攻击者在漏洞被修补之前会迅速抓住机会攻破尽可能多的机器。虽然Linux不能预测何时主机会受到攻击,但是它可以记录攻击者的行踪。
Linux还可以进行检测、记录时间信息和网络连接情况。这些信息将被重定向到日志中备查。
日志是Linux安全结构中的一个重要内容,它是提供攻击发生的唯一真实证据。因为现在的攻击方法多种多样,所以Linux提供网络、主机和用户级的日志信息。例如,Linux可以记录以下内容:
记录所有系统和内核信息;
记录每一次网络连接和它们的源IP地址、长度,有时还包括攻击者的用户名和使用的操作系统;
记录远程用户申请访问哪些文件;
记录用户可以控制哪些进程;
记录具体用户使用的每条命令。
在调查网络入侵者的时候,日志信息是不可缺少的,即使这种调查是在实际攻击发生之后进行。
强制访问控制
强制访问控制(MAC,Mandatory Access Control)是一种由系统管理员从全系统的角度定义和实施的访问控制,它通过标记系统中的主客体,强制性地限制信息的共享和流动,使不同的用户只能访问到与其有关的、指定范围的信息,从根本上防止信息的失泄密和访问混乱的现象。
传统的MAC实现都是基于TCSEC中定义的MLS策略,但因MLS本身存在着这样或那样的缺点(不灵活、兼容性差、难于管理等),研究人员已经提出了多种MAC策略,如DTE、RBAC等。由于Linux是一种自由操作系统,目前在其上实现强制访问控制的就有好几家,其中比较典型的包括SElinux、RSBAC、MAC等,采用的策略也各不相同。
NSA推出的SELinux安全体系结构称为 Flask,在这一结构中,安全性策略的逻辑和通用接口一起封装在与操作系统独立的组件中,这个单独的组件称为安全服务器。SELinux的安全服务器定义了一种混合的安全性策略,由类型实施 (TE)、基于角色的访问控制 (RBAC) 和多级安全(MLS) 组成。通过替换安全服务器,可以支持不同的安全策略。SELinux使用策略配置语言定义安全策略,然后通过checkpolicy 编译成二进制形式,存储在文件 /ss_policy中,在内核引导时读到内核空间。这意味着安全性策略在每次系统引导时都会有所不同。策略甚至可以通过使用 security_load_policy 接口在系统操作期间更改(只要将策略配置成允许这样的更改)。
RSBAC的全称是Rule Set Based Access Control(基于规则集的访问控制),它是根据Abrams和LaPadula提出的Generalized Framework for Access Control(GFAC)模型开发的,可以基于多个模块提供灵活的访问控制。所有与安全相关的系统调用都扩展了安全实施代码,这些代码调用中央决策部件,该部件随后调用所有激活的决策模块,形成一个综合的决定,然后由系统调用扩展来实施这个决定。RSBAC目前包含的模块主要有MAC、RBAC、ACL等。
MAC是英国的Malcolm Beattie针对Linux 2.2编写的一个非常初级的MAC访问控制,它将一个运行的Linux系统分隔成多个互不可见的(或者互相限制的)子系统,这些子系统可以作为单一的系统来管理。MAC是基于传统的Biba完整性模型和BLP模型实现的,但作者目前似乎没有延续他的工作。
防火墙
防火墙是在被保护网络和因特网之间,或者在其他网络之间限制访问的一种部件或一系列部件。
Linux防火墙系统提供了如下功能:
访问控制,可以执行基于地址(源和目标)、用户和时间的访问控制策略,从而可以杜绝非授权的访问,同时保护内部用户的合法访问不受影响。
审计,对通过它的网络访问进行记录,建立完备的日志、审计和追踪网络访问记录,并可以根据需要产生报表。
抗攻击,防火墙系统直接暴露在非信任网络中,对外界来说,受到防火墙保护的内部网络如同一个点,所有的攻击都是直接针对它的,该点称为堡垒机,因此要求堡垒机具有高度的安全性和抵御各种攻击的能力。
其他附属功能,如与审计相关的报警和入侵检测,与访问控制相关的身份验证、加密和认证,甚至VPN等。
三、Linux系统远程攻防技术
1、Linux远程口令字猜测攻击
2、Linux网络服务远程渗透攻击
3、攻击Linux客户端程序和用户
4、攻击Linux路由器和监听器
四、Linux系统本地安全攻防技术
1、Linux本地特权提升
2、Linux系统上的消踪灭迹
3、Linux系统远程控制后门程序
视频学习总结
Kali漏洞利用之SET
Social Engineering Toolkit(SET)是一个开源、Python驱动的社会工程学渗透测试工具。提供了非常丰富的攻击向量库。是开源的社会工程学利用套件,通常结合metasploit来使用
打开setoolkit界面如下:
步骤:
一、命令行下输入setoolkit打开SET套件
二、菜单选项1是社会工程学攻击,输入1回车,可以看到相应模块
1)鱼叉式钓鱼攻击(Spear-Phishing Attack Vectors)
2)网站攻击(Website Attack Vectors)
3)介质感染攻击(Infectious Media Generator)
4)创建Payload并监听(Create a Payload and Listener)
5)群发邮件攻击(Mass Mailer Attack)
6)基于Arduino的攻击(Arduino-Based Attack Vector)
7)无线接入点攻击(Wireless Access Point Attack Vector)
8)二维码攻击(QRCode Generator Attack Vector)
9)powershell攻击(Powershell Attack Vectors)
10)短信欺骗攻击(SMS Spoofing Attack Vector)
11)第三方模块(Third Party Modules)
三、鱼叉式钓鱼攻击
此攻击向量主要目的为发送存在恶意软件的钓鱼邮件。
相应的Payload可以选择不同的漏洞
四、网站攻击框架
此时可以开放一个WEBSever服务,如果对方访问此页面,若系统存在漏洞触发条件,则会被植入后门。
如Java Applet Attack方法就是需要目标有Java运行环境,为了仿真,可以选择自建模板或克隆一个网站。
五、介质感染攻击
借助Autorun.inf执行Exploit得到一个返回的shell,也可以结合Metasploit的后门
六、创建Payload和监听器
七、群发邮件攻击
支持导入列表并向列表中的每个人发送邮件
八、基于Andruino的攻击
九、无线接入点攻击(Wireless Access Point Attack Vector)
无线接入点攻击会创建一个虚拟无线AP,通过接入点ap可以抓取所有连接进来的设备流量。
十、二维码攻击(QRCode Generator Attack Vector)
填入一个危险的URL,使得被攻击者扫描二维码自动访问页面而中招
十一、powershell攻击(Powershell Attack Vectors)
十二、短信欺骗攻击(SMS Spoofing Attack Vector)
十三、第三方模块(Third Party Modules)
Kali嗅探欺骗与中间人攻击
Linux下的中间人攻击套路都是一样的,这里介绍进行ARP欺骗、DNS欺骗和嗅探以及会话劫持(cookies)的方法。
Kali权限维持之后门
权限维持包含Tunnel工具集、Web后门、系统后门三个子类。其中系统后门与web后门统称后门,都是为渗透测试后,为方便再次进入系统而留下的恶意程序。
1.Weevely
Weevely是一款使用python编写的webshell工具,可以算作是linux下的一款菜刀替代工具。
生成后门
2、WeBaCoo
WeBaCoo(Web Backdoor Cookie)script-kit是一个小巧的、隐蔽的php后门,它提供了一个可以连接远程web服务器并执行php代码的终端。WeBaCoo使用HTTP响应头传送命令结果,shell命令经base64编码后隐藏在Cookie头中。
通过加入“:”执行本地命令,不加则借助webshell执行命令。
3、dbd
加密版的nc
监听端:dbd -l -p 2333 -e /bin/bash -k password
连接端:dbd 127.0.0.1 2333 -k password
4、sbd
与dbd使用方法类似
5、U3-Pwn
与Metasploit Payload结合使用工具,从菜单可以单刀多针对移动设备如光驱镜像、U盘等。
6、Intersect
使用“2”列出可以使用的模块
创建后门脚本使用“1”
自由添加功能组件,生成shell
执行这个后门使用./shell.py -d
Kali权限维持之Tunnel
权限维持包含Tunnel工具集、Web后门、系统后门三个子类。Tunnel工具集包含了一系列用于创建通信隧道、代理的工具。
1、DNS2TCP
什么是DNS Tunnel?原理是什么?
2、Miredo
Miredo是一个网络工具,主要用于BSD和Linux的IPV6 Teredo隧道链接,可以转换不支持IPV6的网络连接IPV6,内核中需要有IPV6和TUN隧道支持
3、Proxytunnel
Proxytunnel可通过标准的HTTPS代理来连接远程服务器,这是一个代理,实现了桥接的功能。特别用于通过SSH进行HTTP(S)传输。
Kali逆向工程工具
逆向工程是根据已有的东西和结果,通过分析来推导出具体的实现办法。比如看到别人写的某个exe程序能够做出某种漂亮的动画效果,你通过反汇编、反编译和动态跟踪等方法,分析出其动画效果的实现过程,这种行为就是逆向工程:不仅仅是反编译,而且还要推导出设计,并且文档化,逆向软件工程的目的是使软件得以维护。
Kali下的逆行工程工具包括调试器、反编译工具与其他逆向工具集。
在安全方向上逆向工程大部分都是与漏洞挖掘和软件破解分析相关。
1、edb-debugger
2、Ollydbg
3、Jad——一个Java反编译工具
4、Radare2
radare2是一款开放源代码的逆向工程平台,它可以反汇编、调试、分析和操作二进制文件。
5、Recstudio
6、Apktool
APKTool是google提供的APK编译工具,能够反编译及回编译apk,同时安装反编译系统apk所需要的framewo-res框架。
7、Clang 、Clang++
Clang是一个C怨言、C++、Objective C、Objective C++语言的轻量级编译器。
8、D2j-dex2jar
反编译dex文件到jar文件,进而可以用其他工具查看源代码。
9、Flasm
flasm主要功能是用于直接修改swf文件里的脚本actionscript。
10、Javasnoop
Javasnoop是一个java应用程序安全测试工具,它允许你以拦截的方法,篡改数据和hack运行在你计算机上的java应用程序。通常在没有源代码的情况下,测试java客户端的安全性最好的结果是不可预知的,最坏的结果是不切实际的。