[OtterCTF 2018]-内存取证-WP

[OtterCTF 2018] WP

[OtterCTF 2018] What the password?

题目描述:

you got a sample of rick’s PC's memory. can you get his user password?

先用 vol2 看一下内存镜像信息,版本为Win7SP1x64

image

然后用 lsadump 选项导出LSA数据(包含默认密码,如果设置了自动登陆的话),可看到密码

image

[OtterCTF 2018] General Info

题目描述:

Let's start easy - whats the PC's name and IP address?

IP查网络连接即可,用 netscan 命令,出现次数最多的 192.168.202.131 就是我们要找的IP

image

用 hashdump 命令拿到的用户名提交不对(查了一下主机名和用户名是两个概念),所以我们用hivellist查注册表

image

主机名在 \REGISTRY\MACHINE\SYSTEM 里面,我们用 printkey 命令显示特定位置的信息

image

然后继续跟进ControlSet001

image

然后一路跟进,可看到主机名 WIN-LO6FAF3DTFE

image

[OtterCTF 2018] Play Time

题目描述:

Rick just loves to play some good old videogames.
can you tell which game is he playing?
whats the IP address of the server?

要找他玩的游戏,用 pslist 查看进程

image

然后把进程名复制丢给gpt,问他哪个是游戏,最后知道是 LunarMS 这个游戏

image

然后我们用 netscan 命令查看游戏服务器IP,得到 77.102.199.102

image

[OtterCTF 2018] Name Game

题目描述:
We know that the account was logged in to a channel called Lunar-3. what is the account name?

要我们找这个 Lunar-3 频道的账户名,我们要把 LunarMS.exe 进程的数据拿出来分析

image

用 010 打开,搜索字符串 Lunar-3 ,后面那串就是账户名(没有理由,全是玄学),0tt3r8r33z3

image

[OtterCTF 2018] Name Game 2

题目描述:

From a little research we found that the username of the logged on character is always after this signature: 0x64 0x??{6-8} 0x40 0x06 0x??{18} 0x5a 0x0c 0x00{2}
What's rick's character's name?

他说游戏登录的角色名总是在签名 0x64 0x??{6-8} 0x40 0x06 0x??{18} 0x5a 0x0c 0x00{2} 后面,这里我们可以在010使用通配符搜索搜索 4006??????????????????5a0c0000​,后面的这串字符就是游戏的角色名了,M0rtyL0L

image

[OtterCTF 2018] Silly Rick

题目描述:

Silly rick always forgets his email's password, so he uses a Stored Password Services online to store his password. He always copy and paste the password so he will not get it wrong. whats rick's email password?

他让找 Rick 的邮箱密码,说他为了不出错总是复制粘贴邮箱密码,我们用 clipboard 命令查看剪切板信息,这个就是密码 M@il_Pr0vid0rs

image

[OtterCTF 2018] Hide And Seek

题目描述:

The reason that we took rick's PC memory dump is because there was a malware infection. Please find the malware process name (including the extension)

让找恶意进程,我们用 pstree 命令查一下进程树

image

发现一个 vmware-tray.ex ,是 Rick And Morty 的子进程,有点可疑,用 cmdline 看一下这两个进程的命令行

image

这里看到两个 exe 文件,filescan 命令扫描下这两个文件,然后提取出来

image

image

image

image

image

然后我看了下这两个exe,手贱运行了(千万别学,因为谁也想不到赛题里放真马子),然后就知道答案了,vmware-tray.exe

image

image

[OtterCTF 2018] Path To Glory

题目描述:

How did the malware got to rick's PC? It must be one of rick old illegal habits…

题目问恶意进程怎么进来的,但是我很懵,也不说flag要交啥。。。 我们扫描父进程相关文件

image

然后我们主要分析种子文件,将三个种子文件提取出来

image

用 strings 看一下可打印字符,发现一个叫website的东西,后面那个就是答案(不理解,应该是题目设置),M3an_T0rren7_4_R!ck

image

[OtterCTF 2018] Path To Glory 2

题目描述:

Continue the search after the way that malware got in.

这题我更懵,说进一步分析恶意程序怎么进来的。。。去网上搜了下wp,说这个标志说明种子是从网上下载的

image

刚刚 pslist 查进程的时候,Chrome.exe 进程是出现次数最多的,说明是最主要使用的浏览器

image

我们可以使用 filescan 和 dumpfiles 来查找和提取Chrome浏览器历史记录数据库(豆知识:Chrome 将历史数据存储在 SQLite 数据库中)

image

image

将后缀名改成 .sqlite,用 sqlite3 执行

image

image

执行语句select current_path, site_url from downloads;​查询下载路径和url

image

可以看到种子文件是从 https://mail.com 这个网址下载的,我们将 chrome.exe 进程内存中文件的文件提取出来

image

然后我们用 strings 配合 grep 查看这些提取出来的文件,筛选邮箱后缀 @mail.com​的前后十行

image

这里找到 Rick 的邮箱,有邮箱和密码了,我尝试去登陆邮箱寻找线索,但是显示邮箱/密码错误(毕竟这是个内存取证题,还是老实点吧),然后继续跟进 rickopicko@mail.com​的前后二十行,这串很像flag,提交果然是正确的,Hum@n_I5_Th3_Weak3s7_Link_In_Th3_Ch@in

image

[OtterCTF 2018] Bit 4 Bit

题目描述:

We've found out that the malware is a ransomware. Find the attacker's bitcoin address.

他说这个恶意软件是勒索软件,让我们找攻击者的比特币地址,把我们刚刚提取出来的 exe 逆向分析,先用 detect 查一下

image

是 c# 写的,用 dnSpy 反编译

image

可以看到有一串的提示信息,然后给出了比特币地址,1MmpEmebJkqXG8nQv4cjJSmxZQFVmFo63M ,看了网上的WP是这样做的:

一般勒索软件会在桌面上留下勒索信,我们用 filescan查一下桌面的文件

image

可以看到有个 READ_IT.txt ,还意外发现了 Flag.txt ,一块提取出来,说不定后面有用

image

打开只是个提示文件,还是要分析恶意进程内存里的信息,继续提取

image

然后用 strings -el (这个参数是显示unicode编码的字符串)配合 grep 查看进程内存里面信息,可以看到对话信息,后面给出了比特币提交地址,1MmpEmebJkqXG8nQv4cjJSmxZQFVmFo63M

image

[OtterCTF 2018] Graphic's For The Weak

题目描述:

There's something fishy in the malware's graphics.

他说恶意软件的图标有些可疑,那我们继续分析,在资源里可以看到软件图标,上面就有flag, S0_Just_M0v3_Socy

image

[OtterCTF 2018] Recovery

题目描述:

Rick got to have his files recovered! What is the random password used to encrypt the files?

这题让找加密文件的随机密码,继续分析找到两个函数 CreatePasswordSendPassword

image

可以知道随机密码是CreatePassword​函数生成的,然后由SendPassword​函数与计算机名、用户名拼接发送,这样我们用strings 配合 grep 在恶意进程进程内存中搜索,得到 加密文件的随机密码,aDOBofVYUNVnmp7

image

[OtterCTF 2018] Closure

题目描述:

Now that you extracted the password from the memory, could you decrypt rick's files?

题目让解密 Rick 的文件,之前在桌面提取一个 Flag.txt 出来了,也许就是解密这个文件,我们先看这个加密文件的函数 EncryptFile

image

image

可以知道,先把 password 转成字节,然后用 sha256 计算 password 的哈希作为 AES(魔改) 的密钥对文件进行加密,然后在文件名后面加上 .WINDOWS ,那么我们写脚本解密就好了,注意把 Flag.txt 后面的空字节删了

image

解密脚本如下,丢给GPT写的,想改成python的代码,但是解密的文本总是乱码,就放弃了

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Security.Cryptography;
using System.Text;
using System.Threading.Tasks;namespace ConsoleApp5
{internal class Program{static void Main(string[] args){string filePath = @"Flag.txt";string password = "aDOBofVYUNVnmp7";Program program = new Program();//加密段落//program.EncryptFile(filePath, password);//Console.WriteLine("文件已加密,请勿泄露!");//Console.ReadLine();//解密段落program.DecryptFile(filePath, password);Console.WriteLine("文件已解密!");Console.ReadLine();}public void EncryptFile(string file, string password){byte[] bytesToBeEncrypted = File.ReadAllBytes(file);byte[] array = Encoding.UTF8.GetBytes(password);array = SHA256.Create().ComputeHash(array);byte[] bytes=this.AES_Encrypt(bytesToBeEncrypted, array);File.WriteAllBytes(file, bytes);File.Move(file, file + ".WINDOWS");}public void DecryptFile(string file, string password){string encryptedFilePath = file + ".WINDOWS";byte[] bytesToBeDecrypted = File.ReadAllBytes(encryptedFilePath);byte[] array = Encoding.UTF8.GetBytes(password);array = SHA256.Create().ComputeHash(array);byte[] decryptedBytes = this.AES_Decrypt(bytesToBeDecrypted, array);File.WriteAllBytes(file, decryptedBytes);File.Delete(encryptedFilePath);}public byte[] AES_Encrypt(byte[] bytesToBeEncrypted, byte[] passwordBytes){byte[] result = null;byte[] salt = new byte[]{1,2,3,4,5,6,7,8};using (MemoryStream memoryStream = new MemoryStream()){using (RijndaelManaged rijndaelManaged = new RijndaelManaged()){rijndaelManaged.KeySize = 256;rijndaelManaged.BlockSize = 128;Rfc2898DeriveBytes rfc2898DeriveBytes = new Rfc2898DeriveBytes(passwordBytes, salt, 1000);rijndaelManaged.Key = rfc2898DeriveBytes.GetBytes(rijndaelManaged.KeySize / 8);rijndaelManaged.IV = rfc2898DeriveBytes.GetBytes(rijndaelManaged.BlockSize / 8);rijndaelManaged.Mode = CipherMode.CBC;using (CryptoStream cryptoStream = new CryptoStream(memoryStream, rijndaelManaged.CreateEncryptor(), CryptoStreamMode.Write)){cryptoStream.Write(bytesToBeEncrypted, 0, bytesToBeEncrypted.Length);cryptoStream.Close();}result = memoryStream.ToArray();}}return result;}private byte[] AES_Decrypt(byte[] bytesToBeDecrypted, byte[] passwordBytes){byte[] decryptedBytes = null;byte[] salt = new byte[]
{1,2,3,4,5,6,7,8
};using (MemoryStream ms = new MemoryStream()){using (RijndaelManaged AES = new RijndaelManaged()){AES.KeySize = 256;AES.BlockSize = 128;var key = new Rfc2898DeriveBytes(passwordBytes, salt, 1000);AES.Key = key.GetBytes(AES.KeySize / 8);AES.IV = key.GetBytes(AES.BlockSize / 8);AES.Mode = CipherMode.CBC;using (var cs = new CryptoStream(ms, AES.CreateDecryptor(), CryptoStreamMode.Write)){cs.Write(bytesToBeDecrypted, 0, bytesToBeDecrypted.Length);cs.Close();}decryptedBytes = ms.ToArray();}}return decryptedBytes;}}
}

不出所料,解密的文件里有flag,CTF{Im_Th@_B3S7_RicK_0f_Th3m_4ll}

image

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/834331.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vm最小化安装centos

前期准备 VMware Workstation CentOS-7-x86_64-DVD-2009.iso http://mirrors.aliyun.com/centos/7.9.2009/isos/x86_64/ 创建虚拟机默认下一步,选择稍后安装接着默认下一步,完成后编辑虚拟机设置镜像安装centos 选择第一个Install CentOS 7接着一路默认 配置静态ip 查看子网地…

《Django 5 By Example》阅读笔记:p105-p164

《Django 5 By Example》学习第5天,p105-p164总结,总计60页。 一、技术总结 1.文章标签功能 Django自带django-taggit。 2.自定义template tags 3.roadmap功能 4.RSS功能 5.full-text搜索功能 这里使用的是Postgresql,使用pip install psycopg安装后,执行“python manage.py…

11/15

好讨厌现在的自己 我的能量太低了 需要不断的慰藉 我喜欢逃避 野心家,思想家,我真的sb 没有成就感 绝望绝望绝望绝望绝望今天很drama,不想说什么了,难受,以后再写 明天计划C语言5题【今天少了一道】 下午去比赛 前端考核作业【1/2】可能睡觉睡少了,不开心?洗洗睡了

团队项目4——项目冲刺-4

每日站立式会议昨天已完成的工作: 杨睿:完善社区活动模块接口 个人中心模块接口木萨江:投诉反馈页面开发 管理员管理用户相关接口巴音才次克:物业报修相关接口李佳聪:检查车位信息的删查改接口是否符合需求今天计划完成的工作: 杨睿:完善管理页面 对接个人中心接口木萨江…

团队作业4——项目冲刺5

这个作业属于哪个课程 https://edu.cnblogs.com/campus/gdgy/CSGrade22-34/作业要求 需求&原型改进、系统设计、Alpha任务分配计划、测试计划团队项目仓库 https://github.com/bitpurleclude/GDUT-Goofish/issues团队成员 李嘉锐 车峤锐 于海洋 林进光 黄健 钟启腾 钟月灿1…

基于Java+SSM+JSP+MYSQL实现的宠物领养收养管理系统功能设计与实现二

运行环境:jdk1.8、mysql5.x、idea、maven3.5/3.5 如果环境一致 运行不起来可以右侧联系我,包运行。 功能:管理员信息数据层Mapper、宠物信息数据层Mapper、宠物领养记录信息数据层Mapper、宠物评论信息数据层Mapper、宠物评论回复信息数据层Mapper、用户信息数据层Mapper 技…

Alpha冲刺(3/14)——2024.11.14

目录一、团队成员分工与进度二、成员任务问题及处理方式三、冲刺会议内容记录会议内容四、GitHub签入记录及项目运行截图GitHub签入记录五、项目开发进展及燃尽图项目开发进展燃尽图六、团队成员贡献表 一、团队成员分工与进度成员 完成的任务 完成的任务时长 剩余时间施靖杰 编…

「AI Infra 软件开源不是一个选项,而是必然」丨云边端架构和 AI Infra专场回顾@RTE2024

在人工智能和开源技术蓬勃发展的当下,AI Infra 项目正经历着日新月异的变革。从跨平台运行时到云边端 AI 基础设施,再到多模态知识助手,创新浪潮席卷而来。这些进步不仅显著提升了技术指标,也为实时音视频处理、边缘计算、大模型应用等场景开辟了新的可能性。在 RTE 2024 大…

2024-2025-1 20241305 《计算机基础与程序设计》第八周学习总结

作业信息这个作业属于哪个课程 2024-2025-1-计算机基础与程序设计这个作业要求在哪里 2024-2025-1计算机基础与程序设计第八周作业这个作业的目标 1、功能设计与面向对象设计 2、面向对象设计过程 3、面向对象语言三要素 4、汇编、编译、解释、执行作业正文 本博客链接教材学习…

基于Java+SSM+JSP+MYSQL实现的宠物领养收养管理系统功能设计与实现一

功能点:管理员信息实体类Entity、宠物信息实体类Entity、宠物领养记录信息实体类Entity、宠物评论信息实体类Entity、宠物评论回复信息实体类Entity、用户信息实体类Entity 技术点:SSM+JSP+Mysql+Bootstrap+JS+CSS 免费学习:猿来入此一、前言介绍: 免费学习:猿来入此 1.1 …

2024-2025-1 20241320 《计算机基础与程序设计》第8周学习总结

2024-2025-1 20241320 《计算机基础与程序设计》第8周学习总结 作业信息 |这个作业属于哪个课程| https://edu.cnblogs.com/campus/besti/2024-2025-1-CFAP |这个作业要求在哪里| https://www.cnblogs.com/rocedu/p/9577842.html#WEEK08 |这个作业的目标| 功能设计与面向对象设…

项目冲刺11.15

这个作业属于哪个课程 计科22级34班这个作业要求在哪里 作业要求这个作业的目标 进行为期七天的项目冲刺并记录前言 本篇博客是项目冲刺的第七篇,七篇博客的汇总如下:博客汇总第一篇博客第二篇博客第三篇博客第四篇博客第五篇博客第六篇博客第七篇博客团队简介队名 拖延是你不…