缘由
攻防对抗中,JavaScript 和 Powershell 脚本的混淆见得很多,但经过混淆的 Shell 脚本见得相对少一些。其实,Shell 作为一种简易而灵活的编程语言,其脚本也完全可以做到像 JS/Powershell 那样的混淆。混淆一般是为了逃过自动化检测,也可以给人工分析增加难度。比如,针对 cat /etc/passwd
这一条命令就可以用下面 3 种轻度混淆的方式来编写:
|
|
浪人
攻防对抗中,JavaScript 和 Powershell 脚本的混淆见得很多,但经过混淆的 Shell 脚本见得相对少一些。其实,Shell 作为一种简易而灵活的编程语言,其脚本也完全可以做到像 JS/Powershell 那样的混淆。混淆一般是为了逃过自动化检测,也可以给人工分析增加难度。比如,针对 cat /etc/passwd
这一条命令就可以用下面 3 种轻度混淆的方式来编写:
|
|
在 360Netlab 的旧文 《“双枪”木马的基础设施更新及相应传播方式的分析》 中,提到了 双枪 木马传播过程中的一个恶意驱动程序 kemon.sys ,其中有经过自定义加密的 Ascii 字符串和 Unicode 字符串 100+ 条(说是 编码 也行,毕竟不是很复杂的算法,这里就不掰扯加密跟编码的区别了):
这周末爆发的新型 Linux 挖矿木马 WatchdogsMiner,有两家厂商分析的挺详细,尤其是腾讯云鼎实验室的分析,全面而深入。看完他们的的分析很有收获,也才发现这个 WatchdogsMiner 比之前想象的复杂一些:
但是有一个参与此次木马应急响应的朋友指出:里面有个关键的挖矿模块 /tmp/ksoftirqds
,目前公开的分析文章中看他们并没有提到捕获的细节(当然,不是说他们没有搞定这一点,只是没在文中提及细节)。
说的也是,既然是挖矿木马,个人认为分析的时候要重点关注 3 个要素:
SSH 服务的远程登录服务方式,通常有密码登录和公钥登录两种。公钥登录方式的好处就不赘述了,本文详解 SSH 公钥登录的配置过程,以及其中常见的坑。
Note:本文所有实验均在 Mac 下的 iTerm2 中操作。
配置单个主机的 SSH 公钥登录,步骤非常简单,三步即可:
这是本系列第二篇(第一篇 👉: MSVC++ 逆向(1)——异常处理 ),本篇将介绍 MSVC 中实现的 C++ 底层机制,包括逆向过程中的 类结构内存布局、虚函数、RTTI(Run-Time Type Information,运行时类型识别)。阅读本文需要有 C++ 基础知识以及汇编和逆向相关基础。
MSVC++ 是编写 Win32 应用程序最常用的编译器,所以在 Win32 平台的逆向工作中,懂得其底层工作原理,对逆向工程师来说至关重要。掌握 VC++ 程序的底层原理之后,便能在逆向过程中精准、快速识别编译器生成的胶水代码(Glue Code),这样可以让逆向工程师快速聚焦于二进制文件背后的真实程序和真实逻辑。另外,这对还原程序中高层次的结构(译注
:面向对象的数据结构和程序组织结构、异常相关数据结构等)也有莫大帮助。
本文只是系列文章的上半部分(下半部分见: (译)MSVC++ 逆向(二)—— 类、方法和 RTTI),主要讲栈展开、异常处理以及 MSVC 编译生成相关的数据结构。阅读本文需要有汇编、寄存器和调用约定相关的知识储备,当然,MSVC++ 的编程基础知识也是必要的。
最近一段时间在做安全大数据分析环境搭建以及初步的数据采集、录入工作,这个过程中用到了 Hadoop+HBase+Flume+Kafka
这套大数据分析的工具。在数据分析环境架构中,Flume-1.7.0
主要用来收集各种来源、形式的数据,并把数据传给 Kafka
集群,由 Kafka
集群统一分发给 HBase
集群。
用 Flume
,主要用到的 Source
是 spooldir source
和 http-json source
,Sink
就主要是 Kafka Sink
,配置非常灵活、功能也很强大。但在使用的过程中踩了不少坑,撰文记录一下比较重要的几个。
NOTE:
Flume-ng
的Agent
由三部分组成:Source
/Channel
/Sink
,Source
相当于数据录入源,是 生产者 的角色;Channel
相当于数据传输通道;Sink
相当于数据接收端,是消费者的角色。在Flume-ng
中,数据流向是Source-->Channel-->Sink
。
kafka
Sink 配置坑LEADER_NOT_AVAILABLE
ErrorLinux 系统默认的 ulimit -n
结果为 1024
,这个数量对 HBase 来说有点低,如果 HBase 打开的文件句柄数量超过这个限制,会报以下形式的错误:
官方建议这个数值最少 10000
,不过最好是 2 幂或可以跟 2 的幂有简单的换算关系,比如 10240
。
沙盒(Sanbox) 是一种将未知、不可信的软件隔离执行的安全机制。恶意软件分析沙盒一般用来将不可信软件放在隔离环境中自动地动态执行,然后提取其运行过程中的进程行为、网络行为、文件行为等动态行为,安全研究员可以根据这些行为分析结果对恶意软件进行更深入地分析。
Cuckoo 是一款用 Python 编写的开源的自动化恶意软件分析系统,它的主要功能有:
DHCP( Dynamic Host Configuration Protocol, 动态主机配置协议),是一个局域网的网络协议,使用 UDP 协议工作, 主要有两个用途:给内部网络或网络服务供应商自动分配 IP 地址,给用户或者内部网络管理员作为对所有计算机作中央管理的手段,在 RFC 2131 中有详细的描述。DHCP 有3个端口,其中 UDP67 和 UDP68 为正常的 DHCP 服务端口,分别作为 DHCP Server 和 DHCP Client 的服务端口;546 号端口用于 DHCPv6 Client ,而不用于 DHCPv4,是为 DHCP Failover 服务,这是需要特别开启的服务,DHCP Failover 是用来做“双机热备”的。
在 IP 网络中,每个连接 Internet 的设备都需要分配唯一的 IP 地址。DHCP 使网络管理员能从中心结点监控和分配 IP 地址。当某台计算机移到网络中的其它位置时,能自动收到新的 IP 地址,而不用在每台计算机上单独配置固定的 IP 地址。