20199103 2019-2020-2 《网络攻防实践》第八周作业

20199103 2019-2020-2 《网络攻防实践》第八周作业

1.实践内容

Linux结构

进程与线程管理

  • linux是多用户多进程的模式,多个进程同时运行,由专门的模块来分配资源。

Linux内存管理

  • linux中每个进程有着独立的4g的内存空间,内核代码映射到3g的内存空间上,用户态的则为0-3g。

linux文件管理机制

  • linux将设备抽象成了一个文件来对待,支持三种硬件设备:字符设备、块设备和网络设备。字符设备直接进行读写,没有缓冲区;块设备以块为单位进行读写;网络设备通过网络接口进行访问。

Linux的网络机制

  • Linux的网络接口可以分为协议栈和驱动程序。协议栈负责实现各种可能的网络协议,驱动程序负责和硬件交互。

linux安全机制

Linux身份认证机制

  • 用户:Linux可以创建多个拥有不同权限的用户。用户的类型有:root用户,拥有最高权限的用户,因此很受攻击者青睐;普通用户,由使用者创建并使用的用户,权限受限;系统用户;没有登陆的能力,用于系统运行的用户。同时linux还有用户组,同一组内的用户有相同的权限。

  • 用户远程登录认证:Linux可以使用SSH服务来进行远程登陆。登陆方式有:基于口令的身份认证;公钥身份认证,将公钥放在要登陆的服务器上(可以抵抗中间人攻击)。

  • linux还有很多的网络服务需要身份认证,所以linux提供了PAM(可插入身份认证模块),将服务的认证与服务分离开,自由的给不同的服务配置不同的认证方式。

linux授权与访问控制

  • 文件所有者:linux把所有的东西都看成文件。每个linux文件都有其所有者。可以通过chown命令来改变文件的所有者。

  • 访问权限:linux文件的详细描述可以看出10个标志位。第一个标志位代表文件的类型,之后9个标志位3个为一组。例如第一组为rwx,意思是所有者用拥有读(r)写(w)执行(x)的权限。第二组第三组分别为同组内其他用户的权限,其他用户的权限。如果没有权限,用-表示。如r--,意思是只有读的权限。

  • 执行权限:上面说的除了读写之外还有一个执行权限,常见的是SUID和SGID权限。SUID是党执行者再执行权限的时候,会将自己的权限提升到所有者的权限。如果说一个文件设置了SUID位,而这个文件的所有者是root,那某个用户在执行这个文件的时候,就有了root文件权限。

linux安全审计机制

linux的安全审计机制主要通过三个日志来实现。
  • 连接时间日志:用户登录时,一些程序会把谁在何时记录到/var/log/wtmp和/var/run/utmp文件中。

  • 进程统计日志:当一个进程终止的时候,会在进程统计文件中写一个记录。

  • 错误日志记录:记录下来值得注意的事件(?)。

linux远程攻防

从远程网络侵入linux有如下几种

  • 对linux的网络服务的用户口令进行猜测攻击。

  • 发掘某个网络服务的漏洞并进行利用,注入攻击负载模块代码,然后获得本地shell的访问权。

  • 通过网页木马、欺诈邮件等一些东西进行社会工程学攻击让用户主动安装执行恶意程序。

  • Linux作为一个路由器或者开启混杂模式的时候,可能会被路过的包攻击。

远程口令猜测

  • 之前所说的linux的远程登录的协议,这些协议是用linux的系统内置的用户名和口令进行登录。如果攻击者可以出一组用户和口令,就能进行远程登陆。攻击者自动化的口令猜测工具很多,有brutus,THC Hydra,Cain and Abel等。

  • 针对这一攻击最好的办法就是使用不宜猜中的口令。

linux网络服务远程渗透攻击

  • linux的网络服务的漏洞比win要少。书中给出了如下的漏洞。

  • 每个网络服务都依赖于协议栈,一旦协议栈的安全漏洞被利用,那么所有的网络服务都将可能被利用。

攻击linux客户端程序和用户

  • 攻击linux平台上的客户端程序:大家最常用的程序时web程序和电子邮件程序。而lilnux上最常用的就是firefox的web浏览器。书上也给了firefox和电子邮件客户端thunderbird的漏洞。

  • 攻击linux用户:在难以攻破服务器的时候,可以通过电话、电子邮件等各种方式来用社会工程学的方法向服务器管理员套取各种信息,或者让其执行某些恶意程序。

攻击linux路由器和监听器

  • 在上面提到,党linux作为路由器或者开启混杂模式的时候,如果实现路由寻址和数据包转发功能的程序存在漏洞,很可能遭受构造数据包攻击。

  • linux在进行监听的时候,主要的软件有libpcap、tcpdump、wireshark,snort。除了libpcap之外,其他的都或多或少有些漏洞。

linux和本地安全

linux本地特权提升

  • 在攻击者获得了访问权之后,提权的最简单的方法就是获得root的用户口令,然后提权。

  • 除了第一种方法,攻击者还可以利用su或者sudo的漏洞进行提权。

  • 最常见的攻击方法是攻击那些有root特权程序的代码的漏洞。途径分为攻击SUID特权提升漏洞和攻击Linux内核代码特权提升漏洞。第一种在之前提到过,第二种的原理是在运行linux kernel以及第三方内核驱动程序的时候
    会有完全的系统控制权,而其中的漏洞自然成了攻击者的目标。

消灭踪迹

  • linux的审计日志主要集中在/var/log下,一般攻击者在攻陷linux之后,会去修改日志,不留下自己的踪迹。

远程控制后门程序

  • linux本身就有很多远程登陆和控制的软件,攻击者可以将这些原有的系统程序替换成一些别的程序,让自己随时可以登录。

2.实践过程

8.3.5动手实践

启动merasploit软件

使用exploit:exploit/multi/samba/usermap_script

选择攻击payload为远程shell

设头攻击参数

执行攻击

查看是否正确得到远程shell,并查看获得的权限。

  • 首先像上周一样,启动软件,然后输入命令use exploit/multi/samba/usermap_script

  • 然后show payloads 来查看可用载荷

  • 关于载荷的选择我还处在一知半解的状态,这次是选择了18,其他的我尝试了好多都不可以。

  • 然后设置一些列参数。具体的参数设置的原则和上周的一样。

  • 然后run运行,和上周一样的。。。不行

  • 所以我就和上周一样装了个新靶机,然后切换靶机的IP,再次运行,然后输入shell命令建立一个shell。

  • 最后使用whoami来查看当前账户,可以看到获得了root权限。

实践作业

攻击方:使用metasploit,选择靶机中发现的漏洞进行攻击,获得远程控制权,并尝试进一步获得roo权限。

防守方:使用tcpdump/wireshark/snort进行监听获得数据包文件,结合分析过程,获得攻击者的ip、目标ip和端口、攻击发起时间、攻击利用漏洞、使用shellcode、以及成功之后在命令行输入的信息。

  • 首先进攻的时候,我觉得再用教材的漏洞有点水。。就想尝试着自己找一个别的

  • 参考启龙的博客之后我也用了nessus来扫描。这里我的nessus需要清理浏览器缓存才能用,虽然漏洞我大多看不懂,但是扫描出来的漏洞中可以看到有的漏洞有以下说明

  • 自然这就是我想要的漏洞

  • 点开漏洞之后,里面的说明我还是似懂非懂。但是也有下面

  • 通过这个图自然知道了,这个漏洞的端口、网络服务。

  • 然后用nmap扫描一下靶机,确定端口是开放的(已经扫过了是不是多此一举。。。)

  • 然后就是选漏洞,这里我选的第八个,之后又尝试了几个别的,都失败了。

  • 然后是show payloads,这里我挑了genric/shell_reverse_tcp

  • 然后是一些参数设定,上周都做过就不说明了。

  • 然后运行,攻击。先打开一个shell,然后用id来查询

  • 可以看到现在并不是root权限,所以我就想办法提权。首先我想利用SUID特权提升漏洞,比着教材上的敲了半天,结果都失败了。

  • 于是我转而开始打算直接容sudo口令提升。反正我知道密码。但是他需要的是postgres服务的密码。抱着侥幸的心理我就输入了postgres,幸运的是居然对了,不幸的是对了也没用。上图中可以看到“postgres is not in the sudoers file”。之后我想尝试最后一种方法,利用sudo的漏洞。但是转念一想我知道口令都没用。是不是这个漏洞的sudo命令是获得不了root权限的(自己瞎猜的),所以就放弃了。

  • 攻击就此告一段落,下面是防守方的抓包分析。我用wireshark来抓包。

  • 从上面可以看出来,攻击者IP192.186.254.128,目标IP192.168.254.133,目标端口5432号端口,发起时间也是照旧从三次握手开始。由于握手结束紧接着就是PGSQL,记下来还有很多这个服务的数据包,所以可以看出来利用的是PostgreSQL的漏洞进行攻击。

  • 然后从抓包的流可以看出来攻击者的每一条命令。

  • 现在的剩下的问题是shellcode。在启龙的提示下我注意到了'exec("aW1wb3J0IHB0eTtwdHkuc3Bhd24oJy9iaW4vc2gnKQ==".decode("base64"))'将其中的密文解码,可以看到如下:

3.学习中遇到的问题及解决

  • 问题1:找到的漏洞并不能获取root权限
  • 问题1解决方案:还没有找到另一个可以获得的漏洞。当然直接用教材上的漏洞应该可以。

4.实践总结

自己的基础知识还是不足,找漏洞的时候各种看不懂。

posted @ 2020-04-19 21:28  20199103陈昱帆  阅读(226)  评论(0编辑  收藏  举报