渗透测试恶意代码分析

恶意代码分析概述

基本概念

恶意代码,也称之为恶意软件/恶意程序,在大多数计 算机入侵事件中扮演重要的角色。任何以某种方式来 对用户、计算机、或网络造成破坏的软件,都可以称 之为恶意代码,包括计算机病毒、木马、蠕虫、勒索 软件等。

恶意代码分析,重在分析,通过技术手段获取该程序 的内部结构及其功能实现;对于杀软,提取其特征码 进行查杀;对于取证,可能获得溯源的必要信息,如 IP,作者信息等。

恶意代码分析与hw

hw中发现攻击和消除威胁会加分

处置主机木马程序。需提交分析报告,包括木马样本及分析报告等

发现与分析

发现

持久化/权限维持

分析

自动分析/人工分析

分类

蠕虫或病毒:可以自我复制和感染其他计算机的恶意程序。

后门:恶意代码将自身安装至计算机来允许攻击者访问。后门程序通常让攻击者只需很少甚至无须 认证,便可连接到远程计算机执行命令。

僵尸网络:与后门类似,允许攻击者访问系统,但所有被同一个僵尸网络感染的计算机将会从一台 命令控制服务器接受相同指令。

下载器:用来下载其他恶意程序的恶意程序。

间谍软件:用来收集受害机器信息并发送给攻击者的恶意代码。比如嗅探器、密码哈希采集器、键 盘击键记录器等,通常用来获取E-mail、网银等账号信息。

启动器:用来启动其他恶意程序的恶意程序

勒索软件:加密或窃取用户计算机信息,并勒索用户交出赎金方能解密的恶意程序。

分析目的

恶意代码做了什么

怎么样检测出它

如何衡量和消除所带来的危害

hw-获取攻击者信息,编写分析报告

静态和动态分析

静态和动态分析

静态分析

静态分析技术包括基础技术和高级技术,基础技术包括检查可执行文件但不查看具体指令的一 些技术,而高级技术主要是对恶意代码内部机制的逆向工程;基础技术可以确认一个文件是否 是恶意的,提供有关其功能信息,能够生成简单的网络特征码;高级技术通过将可执行文件装 载到反汇编器中,查看程序指令来发现恶意代码到底做了什么。

动态分析

动态分析技术包括基础技术和高级技术,基础技术涉及运行恶意代码并观察系统上的行为,以 消除感染并产生有效的检测特征码;高级技术则使用调试器来检查一个恶意程序运行时的内部 状态。

注:在进行动态分析恶意程序时,必须建立一个安全环境

常用自动分析网站

腾讯哈勃分析系统

https://habo.qq.com/

微步在线

https://x.threatbook.cn/

virustotal

https://www.virustotal.com/gui/home/upload

virscan

https://r.virscan.org/

静态分析

PEid

用来检测程序是否加壳,加的是什么壳,检测程序所使用的加密算法等

查壳

查加密算法

文件信息

Resurce Hacker

用来查看程序的资源数据,一般恶意软件在资源区隐藏其他可执行代码数据

WinMD5

用来计算恶意文件的MD5值,通过MD5值的比较可以知晓程序是否被人篡改

IDA Pro

IDA是作为静态分析的最重要的工具,她是功能强大的反汇编和反编译工具

动态分析

www.virustotal.com

一个用来分析恶意程序的网站,通过上传一个文件,生成该程序的分析报告,下图所示为wcry.exe的分析报告 头部信息

Process Monitor

进程监视器(Process Monitor) 是Windows系统下的高级监视工具,用来监控注册表、文件系统、网络、进 程和线程行为

Process Explorer

进程浏览器(Process Explorer)是一款强大的任务管理器,是进行动态分析时的必备工具,它能对当前系 统上运行的进程提供有用的观察能力

Regshot

Regshot是一款开源的注册表工具,通过比较两个注册表快照发现差异,从而得知程序运行后对注册表实施了 哪些行为

反向shell

反向shell介绍

当用户连接到服务器时,用户将其套接字与服务器的端口绑定。这称为绑定连接。只有当防火墙允许传 入连接时,绑定连接才可用,在传入连接受到限制的情况下,则无法建立正常连接。防火墙通常限制传 入的连接,但不限制传出的连接。当服务器向用户建立一个传出连接时,这称为反向连接。

linux下的反向shell实现

调用socket创建套接字

向sockaddr_in结构中添加目标地址信息

调用connect链接socket

调用dup2重定向stdin、stdout、stderr到打开的套接字

调用execve启动“/bin/sh”程序

关键点:socket编程实现

metasploit生成的反向shell实现(32位linux程序)

通过socketcall系统调用,设置参数执行socket, 完成创建套接字

设置sockaddr_in数据信息,包括IP、端口等

循环调用dup2,实现重定向stdin、stdout、 stderr到打开的套接字

通过socketcall系统调用,设置参数执行connect ,完成链接

实现execve系统调用完成启动“/bin/sh”

关键点:linux系统调用

metasploit生成的反向shell实现(64位linux程序)

通过socket系统调用,完成创建套接字

设置sockaddr_in数据信息,包括IP、端口等

通过connect系统调用,完成链接

循环调用dup2,实现重定向stdin、stdout、stderr 到打开的套接字

实现execve系统调用完成启动”/bin/sh”

关键点:linux系统调用

linux下系统调用(32位)
x86系统调用                                     read(0, esp, 0x80)
eax:保存系统调用号                               mov edx, 0x80         #参数3传递给edx
ebx:第一个参数                                   mov ecx, esp          #参数2传递给ecx
ecx:第二个参数                                   mov ebx, 0            #参数1传递给ebx
edx:第三个参数                                   mov eax, 3            #系统调用号传递给eax
esi:第四个参数                                   int 0x80              #int 0x80进行系统调用
edi:第五个参数
                                  
*通过汇编指令int 0x80进行系统调用
*系统调用号可在/usr/include/asm/unistd_32.h
文件查看
linux下系统调用(64位)
x64系统调用                                      read(0, rsp, 0x80)       
rax:保存系统调用号                                mov rdx, 0x80     #rdx保存参数3
rdi:第一个参数                                    mov rsi, rsp     #rsi保存参数2
rsi:第二个参数                                    mov rdi, 0     #rdi保存参数1
rdx:第三个参数                                    mov rax, 0     #rax保存系统调用号
rcx:第四个参数                                    syscall     #使用syscall进行系统调用
r8:第五个参数
r9:第六个参数
*通过汇编指令syscall进行系统调用
*系统调用号可在/usr/include/asm/unistd_64.h
文件查看
Windows下的反向shell实现

用WSAStartup调用初始化套接字库

创建套接字

向sockaddr_in结构中添加目标地址信息

将套接字连接到远程端口

使用重定向流启动cmd

关键点:WinSocket编程实现

metasploit生成的反向shell实现(32位Windows程序)

自解密shellcode代码

动态获取各所需API

加载ws2_32模块

调用WSAStartup初始化Winsocket库

调用WSASocketA创建套接字

调用connect建立链接,最多链接5次

调用CreateProcessA启动重定向流的CMD

调用WaitForSingleObject等待命令结束

调用GetVersion获取系统版本

调用ExitProcess结束进程

关键点:Windows系统线程进程相关数据结构、PE文件格式

metasploit生成的反向shell实现(64位Windows程序)

动态获取各所需API

加载ws2_32模块

调用WSAStartup初始化Winsocket库

调用WSASocketA创建套接字

调用connect建立链接

调用CreateProcessA启动重定向流的CMD

调用WaitForSingleObject等待命令结束

调用GetVersion获取系统版本

调用ExitProcess结束进程

关键点:Windows系统线程进程相关数据结构、PE文件格式

持久化

持久化与检测

免杀探索

红队常见的免杀思路

免杀测试-编码免杀

使用metasploit生成Windows32位shellcode

添加代码使shellcode能正常执行(注意编译 选项设置为关闭DEP)

原始文件测试

对shellcode进行单字节0xcc异或编码测试

对shellcode进行多字节异或编码测试

使用VirtualAlloc申请动态内存加载执行

免杀测试2-加壳免杀

添加UPX壳

免杀测试3-使用shellcodeLoader

直接加载

异常处理免杀

免杀与被杀

公开的免杀方法等于不免杀

免杀重在对抗思路

了解常见免杀思路,对分析和确定样本的恶意性有指导性作用

网络安全学习资源分享:

给大家分享一份全套的网络安全学习资料,给那些想学习 网络安全的小伙伴们一点帮助!

对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。

因篇幅有限,仅展示部分资料,朋友们如果有需要全套《网络安全入门+进阶学习资源包,需要点击下方链接即可前往获取

读者福利 | 优快云大礼包:《网络安全入门&进阶学习资源包》免费分享 (安全链接,放心点击)

👉1.成长路线图&学习规划👈

要学习一门新的技术,作为新手一定要先学习成长路线图,方向不对,努力白费。

对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图&学习规划。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。

在这里插入图片描述
在这里插入图片描述

👉2.网安入门到进阶视频教程👈

很多朋友都不喜欢晦涩的文字,我也为大家准备了视频教程,其中一共有21个章节,每个章节都是当前板块的精华浓缩。(全套教程文末领取哈)
在这里插入图片描述

在这里插入图片描述

👉3.SRC&黑客文档👈

大家最喜欢也是最关心的SRC技术文籍&黑客技术也有收录

SRC技术文籍:

在这里插入图片描述

黑客资料由于是敏感资源,这里不能直接展示哦!(全套教程文末领取哈)

👉4.护网行动资料👈

其中关于HW护网行动,也准备了对应的资料,这些内容可相当于比赛的金手指!

在这里插入图片描述

👉5.黑客必读书单👈

在这里插入图片描述

👉6.网络安全岗面试题合集👈

当你自学到这里,你就要开始思考找工作的事情了,而工作绕不开的就是真题和面试题。
在这里插入图片描述
所有资料共282G,朋友们如果有需要全套《网络安全入门+进阶学习资源包》,可以扫描下方二维码或链接免费领取~

读者福利 | 优快云大礼包:《网络安全入门&进阶学习资源包》免费分享 (安全链接,放心点击)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值