一、Linux操作系统基本框架概述

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窗口以及应用软件提供服务。

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。

二、Linux操作系统安全机制

1、Linux操作系统的核心安全机制

身份认证、授权与访问控制、安全审计

2、Linux身份认证机制

Linux是一个多用户多任务的操作系统,通过创建多种角色类型的用户及用户组来实施用户身份管理,来确保多个用户安全地使用Linux操作系统。

3、Linux用户

在Linux系统中以用户作为执行进程完成特定操作任务的主体:①Root根用户②普通用户③系统用户。Linux用户信息保存在系统的/etc/password文件中,具体包括用户名、每个用户唯一的uid、使用Shell类型、用户初始目录等,而加密口令字则存放于/etc/shadow文件中,只对Root可读。

4、Linux用户组

Linux用户组其实就是具有相同特征的用户账号集合,用于简化整个系统的用户权限管理。

Linux用户组信息保存在系统的/etc/group文件中,包括用户组名称、用户组gid及用户组所包含的用户名列表。

用户组加密口令字则保存在/etc/gshadow文件中。可以使用id-a命令来查询和显示当前用户所属组,并通过groupadd命令添加用户组,使用usermod-G group_name user name向特定组来添加用户。

三、Linux系统远程攻防技术

1、远程网络上入侵Linux系统的主要方法

对Linux系统各种网络服务的身份认证过程所涉及的用户口令字进行猜测攻击
发掘Linux系统某个监听网络服务的安全漏洞并进行利用,从而为攻击者提供本地Shell的访问权
通过网页木马、发送欺诈邮件、提供特洛伊木马程序等技术和社会工程学手段
在Linux系统作为连接多个网络的路由器,或者打开“混杂模式”实施网络嗅探的监听器时,可能遭受攻击者特意构造的数据包攻击,从而被攻击者取得访问权。

2、自动化的远程口令猜测工具

Brutus:号称最快最灵活的远程口令猜测破解工具
THC Hydra:非常快速的网络身份认正口令猜测破解工具
Cain and Abel:“黑界神兵”,对Linux下的SSH和各类网络应用服务的远程口令猜测也具有非常好的支持。

3、Linux网络服务远程渗透攻击

Linux系统安全漏洞、渗透攻击与补丁更新过程

针对Linux系统网络服务的远程渗透攻击

Linux内核中的网络协议栈实现

LAMP Web网站构建解决方案中的网络服务

FTP。Samba等文件共享服务

电子邮件收发服务

其他网络服务

4、针对网络服务远程渗透攻击的安全防范措施

禁用所有不必要的网络服务
尽量选择更安全的网络协议与服务软件,并使用最佳安全实践进行部署
及时更新网络服务版本
使用xinetd、防火墙为Linux网络服务添加网络访问控制机制
建立入侵检测与应急响应计划流程

四、Linux系统本地安全攻防技术

1、Linux本地特权提升

需要Root权限配置与管理系统时,通过su或者sudo命令提升至Root用户帐户。攻击者在得到本地受限用户访问权之后,最简单的特权提升途径就是能够破解出Root用户的口令,然后执行su或者sudo命令进行提升。读取口令字密文文件/etc/shadow本身就需要攻击者具有Root特权。通过利用一些以Root特权运行服务中存在的文件任意读/写漏洞,攻击者还是可以先获取到/ect/shadow文件,然后通过破解口令字将自身权限提升至Root特权用户。

第二种特权提升途径是发掘并利用su或者sudo程序中的安全漏洞。攻击者在Linux系统上进行本地特权提升目前最为流行的途径是直接攻击那些具有Root特权程序中的任意代码执行漏洞,让它们替攻击者打开具有Root权限的Shell命令行连接。根据受攻击目标程序的类型,这类途径又分为攻击用户态SUID特权提升漏洞以及攻击Linux内核代码特权提升漏洞。在用户态被设置了SUID位的网络服务与程序,可以在运行过程中提升至文件拥有的权限,来执行一些系统资源相关的操作。

最后一种本地特权提升技术则利用了系统中的一些配置不当,通过从系统中搜索全局可写的敏感文件与目录位置并加以利用,仅拥有首先用户权限的攻击者可能让操作系统或特权程序执行一些他们所预期的操作,从而获得特权提升的机会。

2、Linux系统上的消踪灭迹

清理系统日志,有效抹除掉自己的行动踪迹。查看/etc/syslog.conf配置内容来了解系统当前正在实施的审计事件类型以及日志的存储位置。还需清理在shell程序中所输入的命令历史记录。

一、Kali漏洞利用之SET

Social Enginnering Toolkit(SET)是一个开源、Python驱动的社会工程学渗透测试工具,提供了非常丰富的攻击向量库。是开源的社会工程学套件,通常结合metasploit来使用。

菜单选项1是社会工程学攻击,2是Fast-Track渗透测试,3是第三方模块

1、打开SET套件

20189312任方园《网络攻防》第八次作业 随笔 第1张

2、菜单选项1是社会工程学攻击

输入1回车后,有11个模块:

20189312任方园《网络攻防》第八次作业 随笔 第2张

鱼叉式钓鱼攻击<br>
网站攻击<br>
介质感染攻击<br>
创建Payload并监听<br>
群发邮件攻击<br>
基于Arduino的攻击<br>
短信欺骗攻击<br>
无线接入点攻击<br>
二维码攻击<br>
powershell攻击<br>
第三方模块<br>

3、鱼叉式钓鱼攻击

继续选择1 鱼叉式钓鱼攻击:

20189312任方园《网络攻防》第八次作业 随笔 第3张

此攻击向量主要目的为发送存在恶意软件的钓鱼邮件,相应的payload可以选择不同的漏洞。

20189312任方园《网络攻防》第八次作业 随笔 第4张

4、网站攻击框架

继续选择2 网站攻击框架

20189312任方园《网络攻防》第八次作业 随笔 第5张

此时开放一个webServer服务,如果对方访问此页面,若系统存在漏洞触发条件,则会被植入后门。如Java Applet Attack 方法就需要目标有Java运行环境。为了仿真,可以选择自建模版或克隆一个网站。

选择1

20189312任方园《网络攻防》第八次作业 随笔 第6张

可以复制一个网站,借助内网的嗅探欺骗把域名劫持过过来

5、介质感染攻击

继续选择3 介质感染攻击

20189312任方园《网络攻防》第八次作业 随笔 第7张

6、创建payload和监听器

继续选择4 创建Payload和监听器,与Metasploit给出的Payload类似

20189312任方园《网络攻防》第八次作业 随笔 第8张
7、群发邮件攻击

继续选择5 群发邮件攻击

20189312任方园《网络攻防》第八次作业 随笔 第9张

8、基于Arduino

主要针对硬件攻击,是一个硬件模块。

9、短信欺骗攻击

伪造短消息发送给别人,伪装短信来源

二、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

3、ettercap的准备

ettercap是一套用于中间人攻击的工具。和dsniff套件齐名。支持插件和过滤脚本,直接将账号、密码显示出来,不用人工提取数据。如果是第一次中间人攻击操作,那么要对kali下的etteracp做点配置。

配置文件是/etc/ettercap/etter.conf,首先要将ec_uid、ec_gid都变为0

20189312任方园《网络攻防》第八次作业 随笔 第10张

然后找到linux分类下的if you use iptables这一行,将注释(“#”号)去掉,打开转发。

20189312任方园《网络攻防》第八次作业 随笔 第11张

打开图形化界面 ettercap -G

选择嗅探网卡 默认eth0

20189312任方园《网络攻防》第八次作业 随笔 第12张

4、Ettercap使用

打开ettercap,选择sniff选项-unified sniffing-选择网卡-hosts选项:先scan for hosts,等扫描完了选host list。

20189312任方园《网络攻防》第八次作业 随笔 第13张

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

Weevely是一款使用pythoon编写的webshell工具(集webshell生成和连接于一身,仅限于安全学习教学之用,禁止非法用途),可以算作是linux下的一款菜刀替代工具(限于php),某些模块在win上无法使用。

20189312任方园《网络攻防》第八次作业 随笔 第14张

Weevely是一款使用pythoon编写的webshell工具(集webshell生成和连接于一身,仅限于安全学习教学之用,禁止非法用途),可以算作是linux下的一款菜刀替代工具(限于php),某些模块在win上无法使用。
weevely http://192.168.75.132/1.php
2、WeBaCoo(Web Backdoor Cookie)

script-kit是一个小巧的、隐蔽的php后门,它提供了一个可以连接远程web服务器并执行php代码的终端。WebaCoo使用HTTP响应头传送命令结果,shell命令经base64编码后隐藏在Cookie中。

20189312任方园《网络攻防》第八次作业 随笔 第15张

上传到网站后,使用webacoo连接:

webacoo -t -u http://192.168.75.132/2.php

通过加入:执行本地命令,不加则借助webshell执行命令。

3、Cymothoa系统后门

cymothoa -跑10500 -s -0 -y 2333 (注入2333端口),如果成功,可以连接2333端口返回一个shell

4、Intersect

20189312任方园《网络攻防》第八次作业 随笔 第16张

列出可以使用的模块

20189312任方园《网络攻防》第八次作业 随笔 第17张

20189312任方园《网络攻防》第八次作业 随笔 第18张

执行后门,在目标机上执行 1.py -b,则生成一个bind shell后门,如果之前设置好remote host和remote port,也可以设置为reverse shell

此时连接后门端口成功,返回shell:

四、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、sslh

一个ssl/ssh端口复用工具,sslh可以在同一个端口上接受https,ssh和openvpn连接。这使得通过443端口连接ssh服务器或者openvpn服务器同时在该端口上提供https服务成为可能。sslh可以作为一个研究端口复用的例子。

五、Kali逆向工程工具

逆向工程是根据已有的东西和结果,通过分析来推导具体的实现方法。比如看到别人的某个exe程序能够做出某种漂亮的动画效果,可以通过反汇编、反编译和动态跟踪等方法,分析出其动画效果的实现过程,这种行为就是逆向工程;不仅仅是反编译,而且还要推倒出设计,并且文档化,逆向软件工程的目的是使软件得以维护。

1、Edb-Debugger

EDB(Evan's Debugger)是一个基于Qt4开发的二进制调试工具,主要是为了跟OllyDbg工具看齐,通过插件体系可以进行功能的扩充,当前只支持Linux。

20189312任方园《网络攻防》第八次作业 随笔 第19张

2、Ollydbg

经典的Ring3级调试器,是一个动态调试工具,将IDA与SoftICE结合起来的思想。在Kali下是Wine方式运行的Ollydbg。

3、jad

4、Redare2

5、Recstudio2

6、Apktool

7、Clang、Clang++

8、D2j-des2jar

9、Flasm

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄