第十四章 恶意代码的网络特征

1.网络应对措施。 网络行为的基本属性包括IP地址,TCP端口,以及流量内容等,网络和安全
设备可以利用它们,来提供网络应对措施。根据IP地址和端口,防火墙和路由器可以限制对
网络的访问。入侵检测系统,入侵防御系统,以及电子邮件和web代理等其他安全应用。 作为常用术语的
入侵检测系统已经过时了。特征不再仅仅用在入侵检测方面,还可以用来检测网络扫描,服
务枚举与分析,非标准协议的使用,以及安装恶意代码的通信信令等等。<1>在原始环境中观察恶意代码。 恶意代码分析第一步不应该是实验环境中运行恶意代码,也不是解剖恶意代码分析它的反汇编代码。而应该是首先查看已经获取的关于恶意代码的所有数据。恶意代码分析师经常得到一个没有任何上下文的恶意代码样本(或者是可疑的可执行文件),但在大多数情况下,你看可以获取恶意的更多数据。开始恶意代码网络行为分析的最好方法是挖掘恶意代码已经生成的日志。<2>恶意行为的总计<3>操作安全性。 当你调查过程中采取某些行动时,会告诉恶意代码编写者你已经识别了恶意代码,甚至可能会向攻击者泄露你的个人信息。2.安全地调查在线攻击者 最安全的选择是完全不使用互联网去调查攻击,但这往往是不切实
际的。如果你使用互联网,则应该使用间接的方法,来逃避攻击者潜在的关注。<1>间接性策略。 提供匿名的服务或者机制。<2>获取IP地址和域名信息<3>基于内容的网络应对措施<3.1>使用snort进行入侵检测<3.2>深入观察<4>结合动态和静态分析技术<4.1>过度分析的危险。 如果恶意代码分析的目标是开发有效的网络特征,那么就不需要理解代码的每个模块。<4.2>在众目睽睽下隐藏。 免杀是攻击者操纵后门的主要目标之一,因为一旦恶意代码被检测出,攻击者不仅会失去对现有受害机器的访问,而且增加了未来被发现的风险。<4.3>理解周边代码。 网络行为有俩种类型:发送数据和接受数据,分析发送出去的数据通常比较容易,因为无论恶意代码何时运行,他都会产生便于分析的样本,<4.4>寻找网络操作代码<4.5>了解网络内容的来源<4.6>硬编码数据vs临时数据<4.7>确定和利用编码步骤<4.8>创建特征<4.9>分析解析例程<4.10>这奴棣多个元素 针对不同的元素,创建出不同的网络特征<5>了解攻击者的意图- 专注属于俩端之间的协议元素- 专注于已知的任何协议元素作为密钥的部分- 确定流量中不太明显的协议元素

Lab14-1

分析恶意代码文件Lab14-01.exe。这个程序对你的系统无害。
问题

1.恶意代码使用了那些网络库?它们的优势是什么?
  通过导入函数可以看到URLDownloadToCacheFile

2.用于构建网络信令的信息原元素是什么,什么样的条件会引起信令的改变?
  获取URID,和计算机用户名使用base64编码

3.为什么攻击者可能对嵌入在网络信令中的信息感兴趣?
  计算机用户名可以尝试用来登陆。

4.恶意代码是否使用了标准的base64编码?如果不是,编码是如何不寻常的?
  使用’a’填充,而不是’=’.

5.恶意代码的主要目的是什么?
  获取计算机名,获取guid,下载一个文件,并且运行。

6.使用网络特征可能有效探测到恶意代码通信中的什么元素?
  恶意程序通信中可以作为检测目标的元素包括域名。URI的base64最后一个字符作为PNG文件的名称。

7.分析者尝试为这个恶意代码开发一个特征时,可能会犯什么错误?
  忽略用户名的长度,因为base64编码时会使用用户名。如果长度是3的倍数就不再是填充字符。

8.那些特征集可能检测到这个恶意代码(以及新的变种)?
  urid的编码,比较特殊可以作为识别的特征集。

Lab14-2

分析文件Lab14-02.exe中的恶意代码。为了阻止恶意代码破坏你的系统,恶意代码已经被配置向一个硬编码的回环地址发送信令,但是你可以假象这是一个硬编码的外部地址。
问题

1.恶意代码编写时直接使用ip地址的好处和坏处各是什么?
  攻击者可能会发现静态ip地址比域名更加难以管理。使用dns可以动态重定向他受控主机。对于这俩种编码方式,防御者有不同的方式来部署防御系统。ip地址比域名难以管理。

2.这个恶意代码使用那些网络库?使用这些库的好处和坏处是什么?
  通过查看导入函数可以发现,恶意程序导入WININET中的internetReadFile,InternetCloseHandle,InternetOpenUrlA以及InternetOpenA这四个函数。
  则以程序使用了WININET库,这个库的缺点之一就是需要提供一个硬编码的user-agent字段,另外如果需要的的话,他还要将可选的头部进行硬编码。相比winsock api,wininet库的一个优点就是对于一些元素,比如cookie和缓存可以由操作系统提供。

3.恶意代码信令中URL的信息源是什么?这个信息源提供了那些优势?
  pe文件中的字符串资源节包含一个用于命令和控制的URL。在不重新编译恶意代码的情况下,可以让攻击者使用资源节来部署多个后门程序与控制服务器位置。通过查看资源内容发现。

4.恶意代码利用http协议的那个方面,来完成它的目的?
  攻击者滥用http的user-agent,它应该包含应用程序的信息。恶意代码创建了一个线程,来对这个域传出的信息进行编码,以及另一个线程,使用静态域表示它是通道的"接受"端。

5.在恶意代码的初始信令中传输的是那种信息?
  初始的信令是一个编码后的shell命令行提示

6.这个恶意代码通信信道的设计存在什么缺点?
  尽管攻击者对传出信息进行编码,但他并不对传入命令进行编码。此外,由于服务器必须通过user-agent域的静态元素,来区分通信信道的俩端,所以服务器依赖关系十分明显,可以将它作为特征生成的目标元素。

7.恶意代码的编码方案是标准的吗?
  使用base64,自定义字母

8.通信是如何被终止的?
  使用exit来终止通信,退出时恶意代码会试图删除自己

9.这个恶意代码的目的是什么?在攻击者的工具中,它可能会起到什么作用?
  这个恶意代码是一个小且简单的后门程序。它的唯一目的是给远端的攻击者提供一个shell命令接口,而通过查看出战shell命令活动的常见网络特征不能监测到它。基于它尝试删除自己这个事实,我们推断这个特殊的恶意代码可能是攻击者工具包中的一个一次性组件。

Lab 14-3

这个实验建立在Lab14-1之上。想象一下,攻击者使用这个恶意代码来提高他的技术。分析文件Lab14-03.exe中找到的恶意代码。
问题

1.初始信令中硬编码元素是什么?什么元素能够用于创建一个好的网络特征?
  通过我们使用wireshark捕获的可以发现,网络信令中出现了重复的“user-agent:user-agent:"这样的字符串,我们可以根据这一点构造一个有效的检测特征。


2.初始信令中的什么元素可能不利于可持久使用的网络特征?
  当且仅当配置文件不可以用时,域名和URL路径都会采用硬编码。这个硬编码的URL应该与所有配置文件一起构造特征。然而,以硬编码组件为检测目标,比结合硬编码组件与动态url链接,检测效果可能会更好。因为使用的URL存储在配置文件中,并且随着命令而改变,所以它临时的。

3.恶意代码是如何获得命令的?本章中的什么例子用了类似的方法?这种技术的优点是什么?
  恶意代码从web页面上noscript标签中某些特定组件来获得命令,这与本章中提到的注释域例子类似。使用这种技术,代码可以向一个合法的网页发生信令,并且接受合法内容,这使防御者区分恶意流量和合法流量变得困难。




4.当恶意代码接受到输入时,在输入上执行什么检查可以决定它是一个有用的命令?攻击者如何隐藏恶意代码正在寻找的命令列表?
  要将内容解析为命令,必须包含被完整URL(包括http://)跟随的初始noscript标签,此URL包含的域名和原始网页请求的域名相同。此RUL路径必须以 96’结尾。域名和96之间的俩部分组成了命令和参数如(/commend/1213141516类似的形式)。命令的第一个字母必须与提供命令相对应,在合适的时候,参数必须翻译成给定的命令中有意义的参数。

5.什么类型的编码用于命令参数?它与base64编码有什么不同?它提供的优点和缺点各是什么?
  自定义编码表,使用数组/abcdefghijklmnopqrstuvwxyz0123456789:.的索引。这种编码方案好处不是标准的算法,要理解它的内容需要逆向工程分析它。缺点是很简单:在字符串输出它可能被识别为可以,因为URL总是以相同方式开头,这是一个一致性的模式。

6.这个恶意代码会接受那些命令?
  恶意代码命令包括quit,download,sleep,redirect。

7.这个恶意代码的目的是什么?
  这个恶意代码本质是一个下载器。它有些重要的有点,例如基于web控制,确认为恶意域名并关闭后很容易做出调整。

8.本章介绍了用独立的特征,来针对不同位置代码的想法,以增加网络特征的健壮性。那么这个恶意代码中,可以针对那些区段的代码,或者配置文件,来提取网络特征?
  恶意代码行为中某些特殊元素可能作为独立的检测目标,如下所示:
  -与静态定义的域名和路径,以及动态发现的URL中相似信息有关的特征。
  -与信令中静态组建有关的特征
  -能够识别命令初始请求的特征
  -能够识别命令与参数对特定属性的特征。

9.什么样的网络特征集应该被用于检测恶意代码?

alert tcp $HOME_NET any -> $EXTERNAL_NET $HTTP_PORTS (msg:”PM14.3.1 Specific
User-Agent with duplicate header”; content:”User-Agent|3a20|User-Agent|3a20|
Mozilla/4.0|20|(compatible\;|20|MSIE|20|7.0\;|20|Windows|20|NT|20|5.1\;|20|
.NET|20|CLR|20|3.0.4506.2152\;|20|.NET|20|CLR|20|3.5.30729)”; http_header;
Sid:20001431; rev:1;)

学习笔记-第十四章 恶意代码分析实战相关推荐

  1. 学习笔记-第十二章 恶意代码分析实战

    第12章 隐蔽的恶意代码启动 1.启动器启动器是一种设置自身或其他恶意代码片段以达到即使或将来秘密运行的恶意代码.启动器的目的是安装一些东西,以使恶意行为对用户隐蔽.启动器经常包含它要加载的恶意代码. ...

  2. 学习笔记-第一章 恶意代码分析实战

    第一章 从可执行文件提取有用信息的多种方法,包括以下技术:1.使用反病毒软件来确认程序样本的恶意性:2.使用哈希来识别恶意代码:3.从文件的字符串列表,函数和文件头信息中发掘有用信息.字符串包括 AS ...

  3. 学习笔记-第九章 恶意代码分析实战

    第九章 OllyDbg 1.加载恶意代码直接加载可执行文件,甚至dll程序.如果恶意代码已经在你的系统上运行,你可以通过附加进程的方式调试它.另外,ollydbg是一个灵活的调试系统,可以使用命令行选 ...

  4. 《机器学习》 周志华学习笔记第十四章 概率图模型(课后习题)python实现

    一.基本内容 1.隐马尔可夫模型 1.1. 假定所有关心的变量集合为Y,可观测变量集合为O,其他变量集合为R, 生成式模型考虑联合分布P(Y,R,O),判别式模型考虑条件分布P(Y,R|O),给定一组 ...

  5. Linux shell编程学习笔记-----第十四章

    14.1别名 bash shell的别名实际上就是为了避免用户使用长命令不方便,所以提出的一种重命名的方法,来帮助用户记录 14.2列表 列表是由一连串命令和与(&&),或(||)运算 ...

  6. Java学习笔记-第十四章-NIO与NIO2

    目录 一.NIO 二.NIO2 1. NIO2架构 2. 操作路径 3. 属性读取与设定 4. 操作文档与记录 5. 读取/访问目录 6. 过滤/搜索文档 一.NIO /*** 原始的dump** @ ...

  7. Spring Security技术栈学习笔记(十四)使用Spring Social集成QQ登录验证方式

    上一篇文章<Spring Security技术栈开发企业级认证与授权(十三)Spring Social集成第三方登录验证开发流程介绍>主要是介绍了OAuth2协议的基本内容以及Spring ...

  8. C++ Primer 学习笔记(第四章:表达式)

    2019独角兽企业重金招聘Python工程师标准>>> ##C++ Primer 学习笔记(第四章:表达式) [TOC] ###4.1 基础 左值和右值: 当一个对象被用作右值的时候 ...

  9. QT学习笔记(十四):QLayout的属性介绍

    QT学习笔记(十四):QLayout的属性介绍 主要包括QBoxLayout.和QGridLayout以及QFormLayout等的参数类似. 我主要说明一下QGridLayout在QtDesigne ...

最新文章

  1. 【Linux入门到精通系列讲解】内存管理malloc和free函数
  2. Node.js 笔记01
  3. 用线性单元(LinearUnit)实现工资预测的Python3代码
  4. 电气工程师学python_Python 在电气工程及其自动化上有哪些应用?
  5. linux搭建web服务器原理,【LINUX】linux搭建web服务器
  6. 在windows下配置PostgreSQL
  7. L1-035 情人节(两种方法)
  8. python编程入门第3版pdf-Python编程入门第三版
  9. Ae:时间轴面板(图层控制区)
  10. 如何在Foobar2000中使用iPod
  11. 前端面试经典js题目Foo 与 getName
  12. python少儿编程讲师笔试题_小码王教育儿童编程教师面试:做笔试题(填空题和编程题,填空题 - 职朋职业圈...
  13. 2020.7.25多态、抽象
  14. SkyWalking--告警--使用/教程/示例
  15. 用Modules优雅地管理你的环境变量
  16. Seq2Seq模型介绍
  17. TiDB 架构的演进和开发哲学
  18. MSRA显著性检测数据集
  19. IA-32寄存器(通用寄存器、EFLAGS寄存器、指令指针寄存器、段寄存器)
  20. Centos7端口映射(云端最后别忘了在安全组开放80端口!!!!!!!!!)

热门文章

  1. 自然对数e和圆周率pai
  2. C语言求自然底数e,求自然对数的底e
  3. logcat日志工具使用
  4. 《亿级流量JAVA高并发与网络编程实战》笔记--------更新中
  5. 了解PostgreSQL
  6. Tracert是怎么跟踪路由的?
  7. Asterisk 1.8 meetme 改进
  8. 基数排序 | 主位优先 次位优先 | C语言
  9. IT技术岗的面试技巧分享
  10. C++ 抽象类 (abstract class)