2022SF-CNAS 026 能力验证

检材 1

1:给出通过伪装方式发送的邮件数量及对应的实际发件人。
2:“邮件 1.eml”的 DKIM 签名校验异常,根据嫌疑人声称该邮件未经篡改,给 出修正 DKIM 校验后邮件的 SHa256 哈希值。
3:是否有通过其他邮箱代发方式发送的邮件?如有,给出代发邮件的数量

解析 1

第一题

✔ mail_from 和 from 的区别

图片.png

✔ SPF 的配置
SPF 其实就是一条 DNS 的 TXT 的记录,其记录值就是 SPF 的内容 比如:v=spf1 include:spf.mail.qq.com -all”

查询邮件域的SPF记录也很简单:
windows :nslookup -qt=txt freebuf.com
Linux:dig -t txt freebuf.com

✔DKIM-Signature 的内容:
它的目的主要用来保证邮件的完整性,避免钓鱼。与 SPF 一样也做 Sender authentication,但 DKIM 做的比 SPF 更复杂,DKIM 会对邮件头及正文进行签名,没有私钥下,邮件被假冒或篡改后,就会与邮件头签名不一致,从而防止这样的情况。

其中,v表示DKIM的版本  
a=rsa-sha1,表示算法(algorithm)。有rsa-sha1和rsa-sha256两种,  
c=relaxed/relaxed,表示标准化方法(Canonicalization),头部和内容都用的relaxed方法。还可以用simple,表示不能有任何改动,包括空格.
d=gmail.com,发送者的域名, 也就是Gmail收到邮件信息中的所谓的”署名域”, 这个”署名域”需要在邮件服务器的DKIM设置中配置的,可以和邮件域(比如service@mail.vpgame.net @后面的即是邮件域)不一样(一般都保持一样)
s=20161025,表示域名的selector,通过这个selector,可以允许一个域名有多个public key,这样不同的server可以有不同的key。
h=…,是header list,表示对HEADER中有哪些字段签名。
bh=…,是body hash。也就是内容的hash。
b=…,是header的签名。也就是把h=那个里面所有的字段及其值都取出来,外加DKIM-signature这个头(除了b=这个值,因为还不存在),一起hash一下,然后用rsa加密。
如何查询邮件域的DKIM 公钥:
windows:nslookup -qt=txt mail._domainkey.mail.vpgame.net 
linux:dig -t txt mail._domainkey.mail.vpgame.net

伪造邮件的工具网站:http://tool.chacuo.net/mailanonymous

用编辑器打开邮件,对比它的真实发件人和显示发件人,发现邮件 2,3,4,6,7,8 均是伪装发送,伪装发送的邮件数量为 6
显示发件人是:sm_official@market.com实际发件人为 nlyz_a@163.com

图片.png

第二题

校验 DKIM 值,发现 fail, 原始的 body hash 和实际的 body hash
DKIM 鉴定网站:https://www.appmaildev.com/

实际:ZhNwHgPh6WjpqYYl6BHgF4QRxBe1jtbyeGZ4hwhNS4A=
原始:myHU3BVxbU9BgL1YmyfROLklxqAywUGXwezySQRUmjs=

图片.png

修改邮件 1 的 DKIM 值,替换它的 baby hash, 然后在校验它的 sha256 值

DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=163.com;
	s=s110527; h=Date:From:Subject:MIME-Version:Message-ID; bh=ZhNwHgPh6WjpqYYl6BHgF4QRxBe1jtbyeGZ4hwhNS4A=;        b=TfK2KjoY1e34N9DMS7mMRIFSDRXRa/JmeB+zkzKyI+0KekorAj7+pl3Kc8QLYqeLOe+ATXQnEZP8t6uaGbN3x
	uvpgKX/eLoApk3P55ixRwIVlcLh/NZ0vycUpoGe2lGQ68ISPecSpBvhJvnNLOcJk
	cIyaK6fBfxVJHQ8Jk9y6TM=

则 sha256 为:6219cbc42df2cf5c757350d1d5bb1f20bf6ca61889484de53ef8bdfdc987f8e1

图片.png

第三题

有两个邮件通过其他邮箱代发
邮件 2

图片.png

邮件 6

图片.png

检材 2

4: 第一次运行文件时间属性修改工具“newfiletime”的时间。
5:“C:\Users\ZHAO\Documents\word”路径下文档“模板.doc”是否为本地创 建?综合分析后给出实际创建时间
6:“C:\Users\ZHAO\Documents\word”路径下文档“test.docx”时间属性是 否经过篡改?如是,综合分析后给出该文档未篡改前的修改时间。
7:“C:\Users\ZHAO\Documents\backup”路径下的邮件是否经过篡改?如是, 给出被篡改邮件的总数量
8:“C:\Users\ZHAO\Download”路径下的“Order Confirmation.eml”(显示 “amount of 1429.76 yuan”处金额为 1429.76 元)。根据被害人声称,原邮件中并非该金额,给出篡改前的金额。

解析 2

第四题

使用取证大师进行取证,在应用程序使用痕迹中找到 newfiletime, 第一次使用时间为 2022 07-22 09:37:07
图片.png

第五题

不是本地创建的,本地账户是 zhao,创建者是 leon,实际创建时间是内容创建时间,2018/4/19 9:33

图片.png图片.png图片.png本地账户与创建者不同图片.png

第六题

最后一次保存的日期与修改时间不符合,所以判断经过篡改
未篡改前的修改时间应该为:2021/5/18 9:33

图片.png图片.png图片.png

第七题

邮件被篡改,篡改数目为 2,嫌疑人将它们的金额互换

图片.png图片.png

第八题

邮件被篡改,篡改前的金额为 467.92
翻找邮件没有发现什么,在同文件夹下,看到了 dkim 这个文件夹,感觉和邮件相关,导出这两个 py 脚本(伪造篡改邮件脚本),发现商品的数量和金额都被篡改

图片.png图片.png图片.png

检材 3

9:短信中是否存在被伪造的短信?如有,给出伪造条数(一次发送记为一条)
10: 微信中与“Cassie”聊天记录中的图片是否有篡改?如有,给出原始图片的 SHA256 哈希值
11: 微信中与“Cassie”聊天记录中的附件是否有篡改?如有,给出原始附件的 SHA256 哈希值
12: 微信中与“Cassie”“喵喵真人”聊天记录中的文字内容是否有篡改?如有, 给出被篡改前及被篡改后的信息。(答案格式:与“XX”的聊天记录中篡改 前为“XXX”,篡改后为“XXX”)
13 钉钉中与“Cassie”“落字”聊天记录中的内容及时间是否有篡改?如有, 给出被篡改前及被篡改后的信息。(答案格式:与“XX”的聊天记录中篡改 前为“XXX”,篡改后为“XXX”)

解析 3

第九题

短信参考链接:https://blog.csdn.net/sjz4860402/article/details/41048287
工具集 sqlite 查看工具查看存储所有接收到的短信,短信的 SQLite 数据库文件位于:/data/data/com.android.providers.telephony/databases/mmssms.db
发现篡改的短信数量为 5,它的 data 和 data_sent 相同,明显伪造
sms 是存放短信的表,pdu 和 part 是存放彩信的表,canonical_addresses 是存放手机号码的表,threads 是存放会话信息的

下面是sms表,表中的属性是:
_id:主键,唯一
thread_id: 会话id(和thread表关联),这个会话是指:我跟A互发短信,这是一个会话;我跟B互发短信,这是一个会话;我和A,B群发短信,这是另一个会话。会话包含了所有的短信信息(多条),我们手机短信列表里的每一项就是一个会话。如下图中的,三个thread_id都为1,表明这三个消息都是属于同一个会话的,两个thread_id为4,这两个是同属于一个会话。
address:地址,也就是收件人的手机号码。如下图,有个加号的+8618521564884是别人发过来的短信,没有加号的是从本机发送过去的短信。Null的是编辑的草稿信息
person:联系人地址,(跟通讯录有关)
data:发送短信时间
data_sent:接受短信时间
protecd:协议,分为: 0 SMS_RPOTO, 1 MMS_PROTO  
read:是否阅读 0未读, 1已读
status:状态 -1接收,0 complete, 64 pending, 128 failed
type: ALL=0;    表示所有短信
INBOX=1;       表示这个短信属于收件箱
SENT=2;        表示短信已经发送成功
DRAFT=3;      表示短信属于草稿箱
OUTBOX=4;   表示短信属于发件箱(正在发送)
FAILED=5;      表示发送失败
QUEUED=6;   表示短信在待发送队列中
这里的type 很重要,一个信息的type在发送或者接收的整个过程中会不断的被改变,以区分这个信息处于什么阶段。
body:短信内容
service_center:短信服务中心号码编号
subject: 短信的主题
reply_path_present: TP-Reply-Path
locked:    此条短信是否已由用户锁定,0-未锁定,1-已锁定
send:    用于指明该消息是否已被用户看到(非阅读,点开会话列表即可,不用打开会话),仅对收到的消息有用
下面是thread表,表中的属性为:
_id:主键,唯一
date_sent:会话最新更新时间
message_count: 当前会话所包含的消息数量
recipient_ids:接收者(canonical_addresses表的id)列表,所有接收者以空格隔开
snippet:最新更新的消息的内容(彩信为主题,短信为正文)
read:是否有未读信息:0-未读,1-已读
type:会话类型,0-普通会话(只有一个接收者),1-广播会话(多个接收者)
has_attachment: 是否有附件:0-无,1-有

图片.png

第十题

微信聊天记录的数据保存在 \data\data\com.tencent.mm\MicroMsg,尝试使用 sqlite 打开

\data\data\com.tencent.mm\MicroMsg\b41623e0b132174ecfc168db9e319dd4\EnMicroMsg.db 文件,发现有密码,多次尝试仍未破解。
导出与“Cassie”聊天记录中的八张图片,再将检材放在取证大师中进行分析,在取证大师中搜索同名文件,发现只有 ab242bcccbb76446582c3502e0edcdc4.jpg 在“\data\media\0 下有同名文件,经过对比,发现图片被篡改,推测 \data\media\0\ab242bcccbb76446582c3502e0edcdc4.jpg 为原始照片

计算它的 sha256 为:55f7685e40b6d87cacf760fd2a453752f5e3b06d6000d8cef3a4e8a337d0ae4a

图片.png图片.png图片.png

第十一题

手机取证大师查看聊天记录的详细信息,发现 md5 应该为 <md5>288b7cf77e81edb39b98c68ba0a297f1 </md5>开头,在取证大师的附件中得到 md5 为 530.. 两个不一样,说明附件被篡改,在取证大师追溯源文件,在检材中找到同名文件“\data\media\0\ 商品明细.xlsx”,计算 md5 为 288b7cf77e81edb39b98c68ba0a297f1
则原始文档的 SHA256 哈希值为
F1EBBED4F1E869856B38939797AAC1EA7042FDAE4D9E3E1DF6E2C709D066C96E图片.png图片.png图片.png图片.png

第十二题

使用取证大师进行数据恢复,发现聊天的文字内容被篡改图片.png

第十三题

有篡改,与“Cassie”的聊天记录中篡改前为“2022-07-22 08:21:27”,篡改后为“2022-03-16 01:25:56”。
注:用手机大师取证的时候需要把“手机信息”里的信息填入才能取到钉钉图片.png同样,使用手机取证大师恢复聊天记录图片.png