-
Notifications
You must be signed in to change notification settings - Fork 137
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
notepad++与notepad泄露密文 #40
Comments
是这个文件还没加密的时候,就用记事本打开了吧,是不是手速很快? |
感觉并不是。notepad作为机密进程,notepad++作为非机密进程的时候并没有出现这种情况。而且我当时是复制了三个文件一个是5字节,一个是16字节,一个是27字节。多次重复实验,只有16字节的出现了这种情况。 |
哈,我试试16字节 |
emmm,我这边还挺好复现的。反正看运气,有时候就能看到明文,有时候就能看到密文。
|
你没有添加我刚说的这两个标识吗? |
把DebugView打开,加密完成有日志提示 |
我加了,也是不行的
|
哈哈,那我也没办法了,原因就是没进到PostCreate那个切换密文缓冲的地方,你下个断点在PostCreate,看看到底是因为文件还没加密,还是其他原因 |
复现出来了,就是还没加密。我把内存改成2GB,就出现这个问题了。 |
解决了,刷了一下缓冲。 @wangzhankun |
好的,我测试一下 |
应该是没啥问题了。 |
请问你这边刷新的缓冲是哪一块的缓冲啊?我最近测试又发现了密文泄露的情况。 |
具体是修改了哪些代码呀?是哪一次的提交修改的呢?我研究一下。 |
就是最新的一次提交,刷新的明文缓冲。你那个情况不是因为明文还没加密,然后就用非授权进程打开了,我就在非授权进程打开之前刷了一下明文缓冲,让它尽快从缓冲中刷下。
还有泄露吗?那说明判断条件还可以放宽松一点。 |
测试使用的文件是在非机密文件夹下,使用PocUserPannel手动加密的文档。 代码使用的是我那边的 https://github.com/wangzhankun/FOKS-TROT/tree/dev commit hash: f1d8b6f BUG复现步骤
|
就从log来看,我比较奇怪的是,为啥非机密进程MsMpEng.exe在notepad++写入文件并保存之后尝试读取该文件时,其条件判断为
这不久意味着非机密进程MsMpEng.exe也是看到了明文吗?
|
我记得Read的时候判定一个进程是不是机密进程就是根据 现在就是很奇怪,不知道为啥 因此在实际判定的时候,是不是还是要根据进程是不是机密进程来判断呢? |
查看分析log,我发现MsMpEng.exe是在添加文件标识尾
|
哈哈,我就说得测一测才能合并嘛。 |
那在 Status = PocBypassIrrelevantBy_PathAndExtension(
Data);
if (POC_IRRELEVENT_FILE_EXTENSION == Status)
{//不是机密文件夹下的机密后缀名文件
Status = PocFindOrCreateStreamContext(
Data->Iopb->TargetInstance,
Data->Iopb->TargetFileObject,
FALSE,
&StreamContext,
&ContextCreated);
if(STATUS_SUCCESS != Status)
{//没有找到 StreamContext
Status = PocIsFileUnderControl(FltObjects->Instance, FltObjects->FileObject);
if (STATUS_SUCCESS != Status)
{
//既不是 机密文件夹下的机密拓展名的文件,也没有已经创建好的 StreamContext 也不存在文件标识尾,则不进行处理
Status = FLT_POSTOP_FINISHED_PROCESSING;
goto EXIT;
}
else
{
//do nothing
}
}
else
{//找到了StreamContext
//do nothing
}
}
else
{
// 机密文件夹下的机密后缀名文件
// do nothing
}
/*
* 创建StreamContext,这也是驱动唯二可以创建StreamContext的地方之一,
* 其他地方都是查找
*/
if(NULL == StreamContext)//上文中有可能已经找到了StreamContext
{
Status = PocFindOrCreateStreamContext(
Data->Iopb->TargetInstance,
Data->Iopb->TargetFileObject,
TRUE,
&StreamContext,
&ContextCreated);
if (STATUS_SUCCESS != Status)
{
PT_DBG_PRINT(PTDBG_TRACE_ROUTINES, ("%s->PocFindOrCreateStreamContext failed. Status = 0x%x.\n",
__FUNCTION__, Status));
Status = FLT_POSTOP_FINISHED_PROCESSING;
goto EXIT;
}
} |
推迟到 |
测试环境
bug复现
The text was updated successfully, but these errors were encountered: