zoukankan      html  css  js  c++  java
  • 20199302 2019-2020-2 《网络攻防实践》第9周作业

    作业所属课程:https://edu.cnblogs.com/campus/besti/19attackdefense/
    作业要求:https://edu.cnblogs.com/campus/besti/19attackdefense/homework/10695

    实践内容

    恶意代码

    是一组指令集:二进制执行文件/脚本语言代码/宏代码/指令流。

    恶意代码类型

    计算机病毒:可自我复制,感染需人工干预
    网络蠕虫:自主运行,主动扫描漏洞和传播
    恶意移动代码:通常在web端实现
    后门:绕过安全机制(Netcat /Back /Orifice /Linux Root kit/冰河)
    特洛伊木马:伪装
    僵尸程序:一对多命令
    内核套件:用户态替换或修改可执行文件,或者在内核态控制操作系统内核
    融合型恶意代码

    计算机病毒

    特性

    感染性/潜伏性/可触发性/破坏性/衍生性

    需要宿主程序,它的感染目标:

    1.可执行文件
    (1)感染方式
    前缀感染机制:将病毒代码复制到宿主程序开始,先运行病毒代码,再运行宿主程序
    后缀感染机制:将病毒代码复制到宿主程序末端,修改宿主程序的开始指令,跳转到病毒程序,之后再跳转到宿主程序执行
    插入感染机制:零长度插入技术
    重复感染机制
    交叉感染
    2.引导扇区

    感染主引导记录,和分区引导记录,在计算机启动时获得系统控制权。
    3.支持宏指令的数据文件
    在数据文件中写入代码便于预处理,如宏指令。
    病毒将自身已宏指令方式复制到数据文件中。

    计算机病毒传播机制

    移动存储/电子邮件及下载/共享目录

    网络蠕虫

    通过网络自主传播

    特性

    自我复制/通过网络自主传播/不需要用户交互

    组成结构

    1.弹头:获取计算机访问权
    常用技术

    缓冲区溢出攻击
    文件共享攻击
    电子邮件(附件/阅读器支持脚本)
    利用普遍错误配置

    2.传播引擎

    在“弹头”攻击通道中同时装载全部代码。
    利用网络传输机制(FTP/HTTP/TFTP/SMB/原始SOCKET套接字)

    3.目标选择算法和扫描引擎

    扫描引擎利用目标选择算法,寻找目标主机。
    目标选择算法:

    电子邮件地址
    主机列表 unix:/etc/hosts,windows:LMHOSTS
    被信任的系统 UNIX 从/etc/hosts、 equiv、 rhosts中获信任受害主机的计算机
    网络邻居主机 在Windows局域网中,蠕虫可以通过NetBIOS协议探测局域网中的邻居主机
    域名服务
    通过特定规则任意选择IP目标地址
    4.有效载荷
    附加的攻击代码,为攻击者在目标系统上执行一些特殊目的的操作。
    有效载荷包括
    (1)植入后门 可以通过RootKit技术隐藏在目标系统中
    (2)安装分布式拒绝服务攻击代理
    (3)组建僵尸网络
    (4)执行复杂计算

    后门与木马

    后门:允许攻击者绕过系统常规安全控制机制的程序
    木马:看起来善意,实际隐藏了恶意功能的程序

    后门工具

    后门工具提供的功能

    本地提升和本地账号
    单个命令的远程执行S
    远程命令行解释器访问:远程shell (Netcat)
    远程控制GUI VNC/BO/冰河/灰鸽子
    无端口后门:无需打开TCP或者UDP监听端口的无端口后门,如ICMP后门,基于Sniffer非混杂模式的后门/基于Sniffer混杂模式的后门等

    后门工具往往利用系统的自启动功能

    Windows:后门工具可利用启动文件夹/注册表自启动项/预定计划任务达到自启动
    1.自启动文件夹:C:Documents and Settings[username]Start MenuProgramsStartup文件夹下,一旦后门工具的快捷方式被添加到这个文佳佳,Windows将在系统启动后自动启动后门工具。
    2.其他位置:Win.ini和system.ini中的配置路径
    2.注册表自启动项(ASEP点)
    经典位置:HKLMSoftwareMicrosoftWindowsCurrentVersionRun键值
    工具:msconfig,autoruns,第三方自启动配置管理检测恶意后门工具注册的非法自启动项
    3.程序计划任务面板中配置预定的时间执行特定任务,恶意后门工具也可以将自身运行在这里进行配置
    类UNIX平台:后门工具可以利用inittab系统初始化脚本/inetd网络服务配置/与用户登陆或程序激活相关的用户启动脚本/Crond后台程序计划任务 配置自启动。

    特洛伊木马

    伪装/隐藏

    1、命名伪装
    混淆文件扩展名:通过超长文件名隐藏EXE等扩展名/?利用已知扩展名隐藏的查看设置构造扩展名欺骗/模仿windows系统文件或服务命名
    2、使用软件包装工具
    让攻击者将恶意代码与并无恶意的良性程序捆绑在一起发布
    3、攻击软件发布站点
    将官方站点上的软件木马化
    4、代码下毒
    在软件厂商开发和测试的过程中植入一些与软件功能无关的程序逻辑

    僵尸程序与僵尸网络

    接受控制,利用网络服务漏洞进行网络传播
    伪装/欺骗
    提供远程控制,一对多
    IRC:构成僵尸网络命令与控制信道的主流协议
    控制服务架设软件:Unreal/ConferenceRoom/ircu/bahamut/hybird

    僵尸程序分类

    自动传播型僵尸程序
    受控传播型僵尸程序

    僵尸程序功能组成结构

    1、主体功能:
    (1)命令与控制模块:核心,实现僵尸网络控制器的交互,接受攻击者的控制命令,解析,执行,将执行结果反馈给僵尸完了过控制器
    (2)传播模块:将僵尸程序传播到新的主机
    a 远程攻击软件漏洞传播
    b 扫描NetBIOS弱密码传播
    c 扫描恶意代码留下的后门进行传播
    d 通过发送邮件病毒传播
    e 通过文件系统共享传播
    f 结合即时通信软件和P2P文件共享软件进行传播

    2、辅助功能
    信息窃取模块/主机控制模块/下载更新模块/防分析检测模块

    HTTP僵尸网络和IRC僵尸网络:

    P2P僵尸网络
    对等节点,P2P既是客户端又是服务器(僵尸网络控制器)
    命令
    与控制模块实现机制与上两种不同

    僵尸程序的命令与控制机制

    1、基于IRC协议的命令与控制机制
    IRC:实施网络聊天协议,简单,低延迟,匿名实时通信方式。
    可以用于构建一对多命令与控制信道
    攻击者像受控僵尸程序发布命令的方法:
    (1)设置频道主题(TOBIC)命令,当僵尸程序登陆到频道后立即接受并执行这条频道主题命令
    (2)使用频道或单个将是程序发送PROVMSG消息,通过IRC协议的群聊和私聊方式频道内所有僵尸程序或指定僵尸程序发布命令
    (3)通过NOTICE消息发送命令,效果上等同于第二种,不常用

    2、僵尸网络中的命令
    (1)僵尸网络控制命令
    (2)扩散传播命令
    (3)信息窃取命令
    (4)主机控制命令
    a DDoS攻击
    b 架设服务
    c 发送垃圾邮件
    d 单机欺诈
    (5)下载与更新命令

    2、基于HTTP协议的命令与控制协议

    已有僵尸程序:
    (1)Bobax
    a 僵尸程序先访问一个url,向僵尸网络发送注册请求
    b 僵尸网络控制器反馈,包括当前攻击者对僵尸网络发出的控制命令
    c 僵尸程序解析命令并执行

    (2)命令
    a upd:下载并执行更新程序,
    b exe:执行指定的程序,
    c scn:扫描并感染主机,
    d scs:停止扩散扫描,
    e prj:发送垃圾邮件,
    f spd:报告网络连接速度
    (2)Rustock
    (3)Clickbot

    3、基于P2P协议的命令与控制机制

    更强的隐蔽性
    (1)Slapper
    a 在网络传播过程中,对每个感染主机都建立一个完整的已感染节点列表,消除被用于摧毁僵尸网络bootstrap过程,但同时,也可以被防御者从一个捕获的程序中获得僵尸网络的全部信息
    b 没有实现加密和通信认证机制,僵尸网络易被劫持
    c 复杂的通信机制产生大量网络流量,容易被检测
    (2)Sinit
    与Slapper同,并使用公钥加密进行更新过程的加密
    使用了随机扫描方法寻找其他可交互的将是程序,导致基于P2P构建的监视网络连接弱,且流量大,易被检测。
    (3)Nugache:通过实现加密混淆的控制信道躲避检测
    bootstrap过程中对一个包含22个IP地址的种子主机列表依赖
    (4)Phatbot
    在bootstrap过程中利用了Gnutella的缓冲服务器,是的僵尸网络易被关闭
    基于WASTE协议,在大规模网络中扩展性不好

    Rookit

    一类特洛伊木马后门工具,可以通过控制计算机操作系统的关键组件,获取访问并隐藏在系统中。
    特点:替换/修改现有操作系统软件、隐藏

    内核模式Rookit

    直接攻击操作系统最核心的内核,修改内核从而隐藏自身

    (1)内核是操作系统的核心,能够获取更为全面真实的底层信息,对系统有全面控制能力,有助于提升Rookit后门控制
    (2)可以直接隐藏攻击者信息的虚假情报
    (3)有助于Rookit利用内核权限对抗反病毒软件,甚至可以在反病毒软件检测出Rookit之前就使之无效化
    技术手段
    (1)文件和目录隐藏
    (2)进程隐藏
    (3)网络端口隐藏:隐藏正在后门监听的TCP或UDP端口
    (4)混杂模式隐藏:隐藏网络接口的混杂模式状态,使攻击者进行网络嗅探时更加隐蔽
    (5)改变执行方向:内核将用户运行的程序(重定向一样)到木马化程序
    (6)设备截取和控制:截取和控制发往或来自受害主机上某个硬件设备的数据(如键击记录器)

    Linux内核模式Rootkit
    Linux支持LKM可装载内核模块的内核扩展机制,可以在内核中注入新代码

    Wondows内核模式Rookit
    技术手段
    (1)利用恶意设备驱动程序:对列出当前进程、显示文件和目录及确定TCP/UDP等监听端口的系统调用进行挂钩和劫持。如Slanret/Krei工具(Sebek)
    (2)修改内存中当前运行的内核
    (3)覆盖硬盘上的内核镜像
    (4)在虚拟系统中配置一个内核
    (5)DKOM(Direct Kernel Object Manipulation),内存对象直接操纵技术:可以通过对GDT(globle Descriptor Table)表和其他windows内核对象直接搜索、读取和修改。如:NT Rootkit、Fu Rootkit

    用户模式Rookit

    修改操作系统用户态中用户和管理员所用的一些内建程序和库文件
    (1)分类:

    a 提供后门访问的二进制替换程序
    b 隐藏攻击者的二进制替换程序
    c 用于隐藏但不替换的二进制程序:如更改程序修改时间、删除或修改系统日志
    d 网络嗅探器、后门shell监听器
    e 安装脚本:用于解开打包的rootkit工具,完成自动化的安装过程;自动化安装脚本把程序安装到合适位置,并重置上次修改日期;压缩或填充二进制代码,但长度不变
    (2)类UNIX平台
    (LRK/URK/T0rnkit)
    (3)windows平台(不常用)
    a windows提供的开发接口可用于实现而已功能逻辑插入到现有windows函数之间,不需要覆盖
    b windows使用WFP(windows file protection)机制防止操作系统关键文件被修改或替换,所以在对这些文件进行操作之前,应该使得WFP失效。
    (a)可以通过修改HKLMSoftewareMicrosoftWindowsNTCurrentVersionWinlogon目录下的SFCDisable键值关闭。
    (b)修改用于替换的备份文件目录Dllcache路径位置破坏WFP机制
    c 使用DLL Injection和API Hooking技术把恶意代码直接加入运行进程的内存空间

    恶意代码注入的方式也是三种:
    (1)在调用模块的windows程序和被调用的windows模块之间,如Fake GINA
    (2)在windows程序文件之前(覆盖),需要关闭windows的WFP机制,Code Red Ⅱ Worm
    (3)在运行在内存中的windows进程中注入恶意代码,如AFX windows Rootkit

    恶意代码分析方法

    1、目的:有效预防和应对恶意代码。理解恶意代码行为机理,为进一步生成检测特征码、设计相应处置策略等措施提供支持。
    2、代码分析技术
    (1)静态分析:不实际执行软件代码情况下,对恶意代码自动化或辅助分析。反病毒引擎扫描识别已知的恶意代码家族和变种、逆向分析获取恶意代码的关键程序信息、模块构成、内部数据结构和关键控制流程、理解恶意代码机理,提取特征码用于检测
    (2)动态分析:在受控环境中执行待分析的目标恶意代码,利用系统、网络、指令层次上的监控技术手段,获取目标代码的行为机理和运行结果
    4、恶意代码分析时,需要构造一个受控分析环境,针对二进制程序进行动态或静态分析,还要应对恶意代码的对抗分析机制。(代码分析技术《软件剖析——代码攻防之道》)

    恶意代码分析环境

    1、工具准备
    (1)硬盘保护卡
    (2)安装的操作系统或服务平台是恶意代码攻击对象
    (3)集线器
    (4)反病毒扫描引擎、文件完整性检测软件等,对恶意代码样本控制
    2、虚拟化环境
    3、系统四类主要恶意代码自动化分析组件
    (1)静态分析机
    利用静态方法识别恶意代码是否已知、具体家族和变种、文件格式与运行平台、加壳工具、对已知加壳的恶意代码自动脱壳,提取出检测特征码
    (2)动态分析机
    在轻量级并行沙箱技术的支持下在同一主机上开启多个隔离运行环境,能够并行进行恶意代码样本动态分析,监控并获取恶意代码的系统和网络运行行为,
    (3)网络分析机
    在动态分析过程中,通过网络嗅探技术获取恶意代码的传输网络流量,对网络流量进行分析,获得恶意代码的网络行为事件沦落,提取网络特征检测码。(在恶意代码行为分析网断加入网络模拟设备:蜜罐主机、解决恶意代码网络行为依赖的DNS/FTP/IRC等网络模拟服务)
    (4)综合分析机
    对上述三类分析机的自动分析报告进行综合处理,产生分析报告

    静态分析技术

    恶意代码静态分析技术

    分析技术 目的 工具
    反病毒软件扫描 识别已知恶意代码类型/家族 主流反病毒软件,Virustotal
    文件格式识别 确定攻击平台和类型 file,peid,FileAnalyzer
    字符串提取分析 寻找恶意代码分析线索 strings,IDA Pro
    二进制结构分析 初步了解二进制文件结构 binutils(nm,objdump)
    反汇编 将二进制代码解析翻译成汇编代码 IDA Pro,GDB,VC
    反编译 尝试将汇编代码翻译为高级语言 REC,DCC,JAD
    代码结构与逻辑分析 分析二进制码组成结构,理解二进制代码逻辑 IDA Pro,Ollydbg
    加壳识别和代码脱壳 识别是是否加壳,加壳类型;对抗代码混淆,恢复原始代码 peod,VMUnpacker,UPX
    反病毒软件扫描

    开源反病毒引擎:ClamAV
    Virustotal:在线服务

    文件格式识别

    1、恶意代码形式:二进制可执行文件、脚本文件、带有宏指令的数据文件、压缩文件等
    2、windows:二进制可执行文件EXE和DLL为PE文件格式
    Linux:ELF
    3、工具
    (1)file(windows可以在Sysinternals网站上获取)、PEiD、FileInfo、FileAnalyzer

    字符串提取分析

    通过字符串提取分析,可以得到:
    1、恶意代码实例名
    2、帮助或命令选项:命令行解释器选项的帮助和说明
    3、用户会话:用户和代码之间的会话
    4、后门命令:明文账号和密码
    5、相关URL信息、E-mail地址
    6、包含库文件和函数调用:了解到恶意代码使用了哪些系统的库和API函数接口
    (1)类UNIX平台:strings,Windows平台可从Sysinternals获取
    例如:类UNIX:strings malicious_code_sample | grep come_key_word
    windows:C:strings -a malicious_code_sample | find "some_key_word"
    (2)病毒编写者可以使用Strip(类unix)工具删除所有不可执行的标记性信息以及对病毒压缩,可以使用windows上的PECompact压缩壳软件。
    (3)含有API函数LocalLibraryA、GetProcAddress等且大多数字符串是乱码,可以判断该程序经过加壳处理。
    如果是脚本语言,源代码审查

    二进制结构分析

    1、二进制文件的形成
    (1)编译:将源代码文件转换为可执行执行序列代码
    (2)链接:将目标文件中的各种函数和需要的库链接在一起
    2、在类UNIX平台操作系统中使用binutils工具,查看编译链接后的二进制程序中留下的一些提示。
    (1)strings
    (2)nm,在可执行二进制文件中查找一些被称为”符号“的重要数据元素(函数名,调用地址,重要的变量名和位置及常量),可以查看二进制程序使用的编译器。如果病毒编写者使用strip命令,则找不到符号表
    (3)Objdump,从目标文件中显示出文件头部摘要信息、目标文件运行框架、重定位入口、符号表入口、不同的代码段、编译器编译代码时使用的程序等。
    反汇编,输出目标文件完整的反汇编代码。

    反汇编和反编译

    1、反汇编:二进制机器指令————>汇编指令
    反汇编软件:IDA Pro(含有重要啊程序库符号:MFC类库,标准C库等),Ollydbg,W32Dasm,VC++
    2、反编译:汇编代码—————>高级编程语言
    通常针对不同高级编程语言单独设计和实现。
    C/C++:REC、DCC
    JAVA:JAD、JODE、DAVA

    在针对特定代码进行详细地代码审查之前,会先通过全面的代码结构和逻辑分析了解恶意代码的大概和全貌,或者通过动态分析掌握其行为特征和我们最关心的行为机制,再对反编译出来的代码进行分析。

    代码结构与逻辑分析

    1、函数调用关系图:表示计算机程序中例程之间调用关系的有向图。反映出程序的大体结构。
    2、程序控制流图:对程序代码执行过程全部路径的一种图形化表示方法。

    加壳识别与代码脱壳

    1恶意代码常用的加壳混淆机制:加密、多样性、多态、变形
    (1)加密机制
    一般采用固定加密器对二进制程序进行处理,再处理后的代码中包含一个固定格式的解码器,再执行时,先要解密到内存中,再执行解密后的代码。反病毒软件可以使用改变后的代码中的计米器进行识别和操作。
    (2)多样性技术
    使用多样化的解密器,避免混淆程序中存在单一解密器的弱点。
    (3)多态技术
    可以使恶意代码能够通过插入花指令、无序指令变换、寄存器置换等方式随即变换解码器,使每次感染所产生的恶意代码示例都具有唯一性,使得反病毒软件无法利用解密器中存在的特征对多态恶意代码进行检测。
    (4)变形技术:使用代码混淆技术,变换恶意代码形态无需代码解密,可以直接运行。
    反病毒软件可以提取变形恶意代码的特征,支持检测。
    不会对字符串提取、二进制结构分析和反汇编等机制构成影响。
    2、加壳技术
    压缩壳、加密壳、多态壳、变形壳、伪装壳
    常用加壳软件:UPXPEPack、ASPack、PECompact
    常用加壳识别软件:PEiD、pe-scan、PE Sniffer、fileinfo、Exeinfo PE、DiE、FastScanner、FFI
    UPX -d可以对UPX加壳自动脱壳
    UnPEPack可以对PEPack加壳进行脱壳
    ASPack unpacker可以对ASPack加壳进行脱壳
    基于虚拟技术的脱壳工具:VMUnpacker超级巡警虚拟机自动脱壳器
    手工脱壳技术:寻找程序入口点、dump出程序、修复PE文件的导入导出表等。

    动态分析技术

    1、恶意代码分析实验环境要和业务网络和互联网完全断开,分析完成后要消除恶意代码的影响。
    2、安装快照对比工具了解恶意代码对系统造成的影响
    3、本地系统:安装系统行为监控软件:文件监视器、文件完整性检验器、进程监视器、注册表监视器、本地网络监视器、文本混杂模式检测器
    局域网上的其他主机:安装端口扫描器、漏洞扫描器、嗅探器、远程混杂模式检测器
    4、可以使用沙箱作为更可控的恶意代码运行环境,或是哟个动态调试器在二进制指令层次上跟踪恶意代码的动态运行过程。

    系统恢复方法

    物理主机:硬盘还原卡、GHOST/DD软件,影子系统
    虚拟机:快照还原

    恶意代码动态分析技术列表

    分析方法 目的 实用工具
    快照对比 获取恶意代码行为结果 FileSnap,RegSnap,完美卸载
    系统动态行为监控(API Hooking) 实时监控恶意代码动态行为轨迹 Filemon,Regmon,Process Explore,lsof
    网络协议栈监控 分析恶意代码网络监听端口及发起的网络会话 Fport、lsof、TDImon、ifconfig、tcpdump
    沙箱 在受控环境下进行完整的恶意代码动态行为监控和分析 Norman、Sanbox、CWSandbox、FVM Sandbox
    动态调试 单步调试恶意代码程序,理解程序结构和逻辑 Ollydbg、IDAPro、gdb、SoftCE,systrace

    1、基于快照比对的方法和工具
    软件:RegSnap,完美卸载
    优点:简单易用
    缺点:无法监控和分析恶意代码的中间行为,如恶意代码在运行过程中临时产生的中间文件,在恶意代码运行时产生,后又删除。
    只能分析结果,无法知道是怎样造成的这种影响。
    无法监控网络、内存操作等其他不会造成系统状态持久性改变的行为。
    2、系统动态行为监控方法
    基于行为通知机制或API劫持(API Hooking)技术
    行为通知机制:利用主流操作系统对一些设计文件系统操作、进程等访民啊的行为所提供的通知机制支持。
    API劫持技术:在程序的API调用过程链中的某个环节上下hook,然后记录程序所有关注的API调用事件。行为监控软件在特定层次上选择与恶意代码关键行为相关联的系统API进行劫持。

    系统动态行为监控软件分类

    1、文件行为监控软件
    绝大多数恶意代码都会读写文件系统
    工具:Filemon(Sysinternals提供):文件的打开、关闭、读、写、新建、删除
    Tripwire:确定恶意代码是否改变了操作系统中敏感的文件
    2、进程行为监控软件
    查看恶意软件如何激活进程,以及对进程进行了什么修改。
    软件
    (1)Process Explorer:(Sysinternals提供)增强型任务管理器,能查看到通常看不到的后台执行处理程序并进行处理。还可以查看每个进程调用了哪些DLL、句柄、模块和系统进程(目录树)
    (2)类UNIX平台,top:实时列出正在系统中运行的进程列表及占资源比例等,lsof:详细调查各个进程,可以查看进程打开和生成的文件,代码库,打开的端口。
    3、注册表监控软件
    Regmon(Sysinternal提供)支持过滤规则
    4、本地网络栈行为监控软件
    对恶意代码的网络行为进行监控
    工具:类UNIX平台的lsof:查看开放端口,看到后门所监听的端口。
    windows平台:TCPView和Fport工具查看是否又有新的端口在监听。
    本地嗅探软件
    windows上的TDImon(windows上,sysinternal提供),对windows在TDI内核网络传输驱动模块中的API进行劫持、监控所有来自网络接口的读数据请求以及向网络接口发出的写数据请求。
    5、网络协议栈监控方法
    远程扫描该机器的开放端口,在本机上也进行开放端口检测,对比是否一样,看是否被恶意代码隐藏。
    使用nessus扫描,看主机上是否有后门之类的攻击点。
    对于需要特定条件才能触发的网络行为
    (1)静态代码审查(2)构建含有大多数恶意代码使用的网络服务和环境的虚拟环境
    6、沙箱技术
    提供受限制的执行环境,防止恶意代码对系统造成恶意影响。
    7、动态调试技术
    恶意代码执行过程取决于其类型

    动手实践

    恶意代码文件类型识别、脱壳与字符提取

    实践任务:对提供的rada恶意代码样本进行文件类型识别,脱壳与字符串提取,以获得rada恶意代码的编写作者,具体操作如下。
    (1)使用文件格式和类型识别工具,给出rada恶意代码样本的文件格式、运行平台和加壳工具。
    (2)使用超级巡警脱壳机等脱壳等脱壳软件,对rada恶意代码样本进行脱壳处理。
    (3)使用字符串提取工具,对脱壳后的rada恶意代码样本进行分析,从中发现rada恶意代码的编写作者是谁?

    在windows平台使用cygwin模拟linux环境,使用file命令查看文件类型:

    可以看出,文件类型为PE32可执行文件,针对Windows 32位操作系统
    使用PEid查看文件的信息


    从上图可以看出文件的入口点、文件偏移等信息,且可以看出该代码由UPX软件加壳。

    使用strings命令查看其中包含的字符串信息,全是乱码,应该是加壳导致的。

    那么使用超级巡警对可执行文件脱壳:

    再次使用strings查看可执行文件中的字符串:

    不是乱码了。然后使用IDA pro进行查看:

    可已看到一些描述,但是没有找到author信息。
    R
    然后去strings中找,可以看到这样一条包含authors的字符串,应该就是作者的信息了:Raul Siles & David Perez,写于2004年。

    其他的都是一些汇编代码
    也可以看其中的字符串等信息,卡住了,截不了图了。

    分析Crackme程序

    使用IDA Pro静态或动态分析crakme1.exe与crackme2.exe,寻找特定的输入,使其能够输出成功信息。

    根据参数的个数不同,可以猜测输入应该只有个参数:

    之后使用strings命令:

    可以看到有些熟悉的句子,一个是参数个数对的时候的反馈,一个是不对的时候的反馈,其他的什么也看不出,然后用IDA Pro打开文件。

    在Name这一栏,可以看到一些似懂非懂的东西,像是C语言

    可以看到一个_get***,猜测是获取输入的值,还有进行字符串比对的strcmp。这时候去看DCG图:

    可以看到,比较的小模块在280这个块里,去找这个functon,可以看到这四个语句,针对不用输入情况的输出:

    比较参数个数,看是不是1个:

    比较两个字符串

    如果是这个字符串:

    如果不是:

    所以输入应该是比较的那个字符串。

    样本分析实践:分析一个自制恶意代码样本rada

    待分析二进制文件位置:rada.zip,这个二进制文件是一个而恶意代码,必须采用过一些预防措施保证业务系统不被感染,建议在一个封闭受控的系统或网络中处理这个未知实验品。
    回答问题:
    1、提供对这个二进制文件的摘要,包括可以帮助识别同一样本的基本信息。
    2、找出并解释这个二进制文件的目的。
    3、识别并说明这个二进制文件所具有的不同特性。
    4、识别并解释这个二进制文件中所采用的防止被分析或你想工程的技术。
    5、对这个恶意代码样本进行分类(病毒、蠕虫等),并给出理由。
    6、给出过去已有的具有相似功能的其他工具。
    7、可能调查出这个二进制文件的开发作者吗?如果可以,在什么样的环境和什么样的限定条件下?

    获得摘要

    获取文件类型

    查看字符串信息:

    大部分是乱码,应该是经过加壳,使用PEiD看一下基本信息,是经过UPX加壳的:

    脱壳处理、使用IDA Pro进一步分析,首先看一下字符串:

    可以看到,这个代码访问了注册表中自启动的键值和是否安装VMare工具的键值,以及后面的一个DDoS Smurf攻击字样。

    这里有访问的一个地址。

    这里有一个如果在刚打开网页的时候在网址框中会出现的字符串:

    这里有一个截图的字样

    出现蜜网的网址:

    好像这个是作者:

    下面又有一些HTML内容:

    再往下,这个应该是作者,写了authotr:

    之后看到一个MSVBVM60.dll,VB的运行库文件

    这里有一个完整的访问网址,而且和可执行文件的名字一样:

    点开这个位置,看到它的汇编代码:

    可以看到一些命令行代码,这些命令行代码经过查询:

    参数 作用
    --visible 弹出网页是否可见
    --verbose 显示starting DDOS smurf remote attack
    --uninstall 卸载二进制程序
    --tmpdir 设置缓存文件夹
    --server 设置获取命令的服务器的地址
    --period 两次获取命令的时间间隔
    --noinstall 执行程序但跳过安装
    --installdir 修改安装路径,不再安装到c: ada
    --help 实际上并不像字面意思一样输出帮助信息,仅仅是程序名等信息
    --gui windows下的一个命令窗口
    --cycles 设置获取命令的次数
    --commands 设置获取命令的文件
    --cgiput 与上文put相对应的cgi脚本
    --cgipath 设置远程cgi脚本的位置
    --cgiget 与上文get相对应的xgi脚本
    --authors 在VM中会产生输出,但是在物理机中不会输出

    这里有三个不同的网段

    点开之后可以看到这些操作都是在52c0这个模块中

    看一下这个模块的内容:

    猜测是对网址进行判断,以选择不同的操作。
    之后发现一个dword_*******,不知道是什么,百度说dword是注册表键值,不知道是做什么的,但是可以看到在往里放东西,最后和一个什么值进行了比较

    这里好像是移动了文件位置。

    后面的小方框中,可以看到一些命令一样的字符,get put screenshot等,像是发起的命令。

    在这个位置有对一个网络适配器的配置进行查询可用IP的语句

    猜测是要扫描可用主机。

    这个位置是一些可以上传数据的url

    然后把网断开,运行一下这个可执行文件,用wireshark抓包,什么都没有抓到,但是在c盘下看到了前面看到的文件夹Radain(含有RaDa.exe)以及RaDa mp

    这个可执行文件访问了网络,来获取执行指令,修改了自启动注册表,对目录主机上的文件进行查看,上传,可能是要到一个网址(很完整的那个网址10.10.10.10 ada)上get文件或者命令到受害主机。看到字符串中还有发起Smurf攻击的字样,也有寻找可用IP的东西,感觉像是一个僵尸网络,或者反弹后门程序;在解压这个文件的时候,很快就被物理机上的杀毒软件识别为有害的程序,就加了个壳,应该不是个木马程序。有对好几个网段的判断什么的,也可能是对于不同的网段执行不同的命令,不知道是不是要进行扫描可用网址进行传播?没有找到后续相关的信息,不敢确定。但是比较可能的是要利用组成的僵尸网络对某个网络或者主机进行DDoS攻击。

    对于它的特性:这个文件需要人工操作,不能自主运行,要执行它才会被执行一些列改注册表,访问网站,复制文件位置等操作(我看别人的博客上运行后抓取到了包·····我抓不到)
    没有看到它自我复制的迹象。
    被杀毒软件检测出来了,可能是因为修改了注册表自启动项。

    upx加壳给程序减小了体积,防逆向工程。

    相似的工具:Mirai(使用一系列物联网设备对全球各种目标发动DDoS攻击)

    取证分析实践:windows2000系统被攻陷并加入僵尸网络

    分析日志文件并回答以下问题:
    1、IRC是什么?当IRC客户端申请加入一个IRC网络时将发送哪个消息?IRC一般使用哪些TCP端口?
    2、僵尸网络时什么?僵尸网络通常用于什么?
    3、蜜罐主机(IP:172.16.134.191)与那些IRC服务器进行了通信?
    4、在这段观察期间,多少不同主机访问了以209.196.44.172为服务器的僵尸网络?
    5、哪些IP地址被用于攻击蜜罐主机?
    6、攻击者尝试攻击了哪些安全漏洞?
    7、哪些攻击成功了?是如何成功的?
    答:
    1、IRC是构成僵尸网络命令与控制信道的主流协议,是Internet Relay Chat的缩写。本来是用于即时消息通信的。可以用客户端或者web端进行接入,当IRC客户端申请加入一个IRC网络时需要发送nickname(唯一),password

    关于IRC监听的端口,找到了一条这样的信息,监听TCP194端口。

    另外,也找到消息称IRC默认登录端口为TCP 6667,当tcp 6667端口不通时,会尝试其他端口,6660-6669,还可以使用SSL在TCP 6697端口加密传输。

    2、僵尸网络是攻击者通过僵尸程序控制的很多主机组成的网络,可以一对多发起命令。主要用于DDoS攻击、发送垃圾邮件、监听敏感信息,主机活动、 单机欺诈等。

    3、可以找到的IRC服务器有:
    209.126.161.29 66.33.65.58 217.199.175.10 63.241.174.144 172.16.134.191

    完成第二次握手的有:

    63.241.174.144、217.199.175.10和209.196.44.172

    完成三次握手的也正是这三个:

    4、可以看到这段时间,只有蜜罐主机连上了这个服务器。

    但是点开每一个对于JOIN的response IRC包,发现有其他的IP地址:

    经过观察,每一个加入僵尸网络的都会有一个"JOIN"字样,那么首先将含有ip.src==209.196.44.172 and irc.response的IRC包单独分离出来。

    之后使用tcpflow进行分流,分成209.196.44.172和172.16.134.191两个部分,然后看与209.196.44.172相关的部分
    tcpflow -r response.pcap "host 209.196.44.172 and port 6667"

    然后对这个文件进行处理

    之后使用cat -n 打开生成的tmp文件,看行号,可以看到有


    593行,应该是有5593个主机加入。

    5、因为蜜罐主机不会开启什么服务供外部连接,所以认为所有的对它主动连接的都是一次攻击,所以用跟这个过滤规则进行过滤:

    根据数量排序后,看到前面三个ip地址对蜜罐主机发送的包很多,所以猜测,这三个IP地址的主机应该是发动攻击的主机。
    24.197.194.106 210.22.204.101 129.116.182.239

    6、使用snort对response.pcap进行分析:

    然后查看/var/log/snort/alert

    可以看到的攻击漏洞:
    前面有部分蜜罐主机的通信很多端口为1434 445 等
    MS-SQL Worm propagation attempt 分类为misc Attack

    NETBIOS SMB-DS IPC$ UNICODE share access 尝试获得管理员权限

    MS-SQL version overflow attempt,这是在微软的SQL server 2000和MSDE 2000上的缓冲区溢出漏洞,能够允许远程攻击者造成拒绝服务攻击,连接UDP的1343端口,一个0x04字节的数据就会造成SQL 监控器产生一个长的注册键值,或者0x08字节的长字符串会造成堆崩溃,可能是MS-SQL slammer/sapphire worm。

    可能被使用非标准的协议或事件探测了蜜罐主机

    对web应用的vulnerable探测和攻击:
    IIS 4.0允许远程攻击者通过请求一个不存在的以.ida或者.idq为扩展名的文件来获得文件根的真正路径名。

    在IIS 4.0,可以让远程攻击者获取到某个.htr文件,从而可以获得可用的用户名和passwd

    在一个运行了IIS服务的windows主机上找漏洞,可能会被获取管理员的权限

    默认情况下,IIS4.0有一个虚拟目录:/IISADMPWD,在这个文件夹中,包含了可以被用来暴力破解口令攻击或识别可用users的内容

    WEB-MISC http directory traversal

    一些windows 系统中,微软个人主页服务器和前端个人网站服务器允许远程攻击者通过一个非标准的URL读取文件

    尝试获取user的权限

    在IIS4.0和5.0中的ISM.DLL允许远程攻击者通过请求文件和追加一个很大的值(以.htr为扩展名)来读取文件内容,也叫HTR文件片段泄露漏洞

    下面这个也是在寻找IIS上的漏洞

    也可以看到都是对蜜罐主机的80端口发送的

    在最后有对IRC的通信的隐私的窃取?

    对netbios的smb-ds建立会话时,所用的usernama进行溢出尝试

    7、使用wireshark进行分析攻击是否成功
    (1)MS-SQL Worm攻击:无文件载体内存蠕虫,通过udp 1434端口传播,会消耗计算机资源,只需要重新启动,就会被清除
    由于蠕虫具有自动扫描感染的能力,那么看一下蜜罐主机在udp 1434端口发出的通信情况,可以看到过滤之后没有匹配项,所以判断没有成功。

    (2)对于MS-SQL slammer/sapphire worm和(1)同,失败
    (3)对于web IIS端口攻击,查看连接蜜罐主机tcp 80端口的IP

    然后看这些连接的请求,
    对于210.22.204.101这一个看起来是想要访问.ida的文件,然后没有得到回应。


    对于192.130.71.66和213.23.49.158 ,好像也没干什么


    218.25.147.83又开始找.ida文件

    追踪一下tcp流,看到了可疑的字段,worm,可能是一次Code Red Worm攻击,然后并没有收到蜜罐主机的什么有意义的回应,并且也没有看到蜜罐转发这样的HTTP数据包,所以没有成功

    再看24.197.194.106,发送了很多http请求,应该是对IIS进行攻击的,获取权限之类的,但是也是一样没有收到相应的蜜罐主机的回应。

    不知道这是什么操作

    对于68.169.174.108,蜜罐主机为它的请求返回了一个IIS默认页面。也没有成功。

    之后再看看针对445端口的连接:


    可以看到有些熟悉的共享卷,之后有一些SAMR包,请求的都被响应了。

    看到了敏感的东西,可是我不知道它在干嘛


    但是好像每次的挑战值都不一样

    可以看到攻击者打开了172.16.134.191C$,然后向WINNTSystem32创建了一个r_server.exe文件,之后又将文件trans过去。

    后来又传了一个raddrv.dll和admdll.dll


    这三个文件属于radmin的后门程序中的文件,攻击成功。

    61.111.101.78这个IP,和前面那个攻击的操作一样,但是发送的文件不一样,PSEXESVC.exe(算是一个轻量级telnet替换工具,支持远程系统和远程支持工具中启动交互式命令提示窗口,这个工具是合法的,所以当反病毒软件检测到它之后,可能会直接忽略,如果启用了这个服务,这个文件会被放在windows目录下),后面有一个svcctl的dll

    最后删除了这个文件。

    也是成功的。

    遇到的问题

    1、在使用grep过滤的时候,在重定向的文件中出现了什么二进制文件balabala,就是没能正常的产生这个文件。
    方法:在grep -a [条件]就可以了。
    2、在运行rada.exe的时候,没有反应,不知道为什么。

    心得体会

    我对这些知识并没有消化,还不能有一个更全盘的认识。
    在取证分析部分很乱,不成体系。
    想看看一些其他的基础知识,可是时间有点紧张,emmmmm,会放松一点时间,因为我看书、学东西好慢,用很长的时间干完一件事了之后,脑子会比较沉重。

  • 相关阅读:
    zip压缩类
    sqlserver配置允许快照隔离
    (三)装饰模式
    (二)策略模式
    (一)简单工厂模式
    MFC中lib和dll的区别
    VC MFC工具栏(CToolBar)控件(非常重要)
    CMFCMenuBar和CMFCToolBar相同ID,在显示不同标签文字
    CImageList类Create函数参数解析
    c++连接数据库代码
  • 原文地址:https://www.cnblogs.com/eosmomo/p/12790771.html
Copyright © 2011-2022 走看看