知识屋:更实用的电脑技术知识网站
所在位置:首页 > 网络安全 > 安全资讯

手动降低IE权限 防范网马

发布时间:2011-03-04 19:23:56作者:知识屋

文/图 单克隆抗体 [S.U.S]
自从“网马”出现后,人们上网越发的小心翼翼。如果用Google的时候网页下面加了一条“该网站可能含有恶意软件,有可能会危害您的电脑”,你多半不会再去点它了。如果你管理的局域网里有几十台以上的电脑上网,你的杀毒和清理木马的任务就够你失去多次和女友约会的机会。问题主要是,你的那些电脑使用者只会拼命的上网冲浪,不会使用主动防御和较复杂的杀毒软件,这样你只好想一个办法:降低他们的IE权限。


下面给出我的两种思路以解决该问题。两种方法的原理都是用低权限令牌打开IE,这样,即使IE浏览了含网马的网页,由于权限不够,病毒也不容易被安装进来。

方法一:
1)打开“命令提示符”,输入如下内容:
net user a a /add
net localgroup users a /del
即新建一个用户名和密码均为a的账户,并将其从默认的users组删除。这样,它就只具有everyone权限了。


2)用上面建立的账户运行IE
这里提供两种方法:一是在IE上点右键,选“运行方式”,弹出“运行身份”对话框,在“下列用户”中选择用户a,输入密码a就可以了。二是在“命令提示符”里,输入“runas /user:a c:progra~1intern~1iexplore.exe”,然后输入密码a,同样可以达到这一目的。
注意,在使用这两种方法的时候,Secondary Logon服务必须处于启动状态(默认启动),如果没有,则启动它。
也许大家认为这样还是太麻烦,那就再告诉大家两个更简便的方法。
将如下代码写到记事本,保存成后缀为vbs的文件,双击这个文件就可以了。

Set wshshell = CreateObject("WScript.Shell")
wshshell.Run("runas /user:a c:progra~1intern~1iexplore.exe")
WScript.Sleep(1000)
wshshell.SendKeys("a")
wshshell.SendKeys("{ENTER}")

这个方法的原理其实就是把方法b用一个脚本实现了,自动向窗口发送按键。
另外,如果你用的XP Professional版,“runas.exe”还提供了“/savecred”参数,可以让Windows在当前用户环境中记住另一用户的登录凭据信息。一旦在命令中加入此参数,runas.exe便会使用上次运行的凭据信息。这样一来,只要运行下面的命令,我们就不用每次都输入用户密码了。
runas /user:a /savecred "c:progra~1intern~1iexplore.exe "
总之,运用方法一就是建立一个低权限账户,然后用它运行程序。当然,运用此方法,你也可以针对这个低权限账户把权限设置得变态点。不过,如果你是XP Home系统的话,需要进入安全模式才能设置账户权限。或者用一个小工具解除限制,让你在正常模式也能设置权限,这个小工具我已经随文一起提供了。

 

方法二:
这个方法是运用微软牛人写的一个叫DropMyRights的程序降低自己的权限运行IE。以下是该程序的用法。

DropMyRights v1.04 by Michael Howard (mikehow@microsoft.com)
Usage is:
DropMyRights {path} [N|C|U]

Where:
path is the full path to an executable to run.
N = run as normal user (default).
C = run as constrained user.
U = run as an untrusted user.

我们只需运行“dropmyrights c:progra~1intern~1iexplore.exe c”即可。使用参数c就可以到比较高的安全性,用参数u则会导致部分网站不能正常显示。
如果想操作再简单点的话,只需在桌面上新建个快捷方式,项目的位置填“c:dropmyrights.exe c:progra~1intern~1iexplore.exe c”就可以了。注意路径要根据自己的情况修改一下。
不过这个命令行工具用起来还是太麻烦,于是我就把DropMyRights改写成了图形版,如图1所示。下面我们来看看它的核心代码(参考自参考原作者Michael Howard代码!。)


图1

void CDropMyRightsGUIDlg::OnOpen()
{
UpdateData();
DWORD fStatus = ERROR_SUCCESS;
// get the SAFER level
DWORD hSaferLevel;

if (0==m_SaferLevel) hSaferLevel = SAFER_LEVELID_NORMALUSER;
else if (1==m_SaferLevel) hSaferLevel = SAFER_LEVELID_CONSTRAINED;
else if (2==m_SaferLevel) hSaferLevel = SAFER_LEVELID_UNTRUSTED;
else hSaferLevel = SAFER_LEVELID_NORMALUSER;
SAFER_LEVEL_HANDLE hAuthzLevel = NULL;
if (SaferCreateLevel(SAFER_SCOPEID_USER,hSaferLevel,0, &hAuthzLevel, NULL)) {
// Generate the restricted token that we will use.
HANDLE hToken = NULL;
if (SaferComputeTokenFromLevel(
hAuthzLevel, // SAFER Level handle
NULL, // NULL is current thread token.
&hToken, // Target token
0, // No flags
NULL)) { // Reserved
STARTUPINFO si;
ZeroMemory(&si, sizeof(STARTUPINFO));
si.cb = sizeof(STARTUPINFO);
si.lpDesktop = NULL;

// Spin up the new process
PROCESS_INFORMATION pi;
if (CreateProcessAsUser(hToken,m_path, NULL,NULL, NULL,FALSE, CREATE_NEW_CONSOLE,NULL, NULL,&si, &pi)) {
CloseHandle(pi.hProcess);
CloseHandle(pi.hThread);
} else {
fStatus = GetLastError();
// fwprintf(stderr,L"CreateProcessAsUser failed (%lu)n",fStatus);
}
} else {
fStatus = GetLastError();
}
SaferCloseLevel(hAuthzLevel);
} else {
fStatus = GetLastError();
}
//return fStatus;
}

原理比较简单,点击界面上的“打开权限”选项后,程序会先提取当前用户的令牌,从该令牌中删除各种特权和 SID,然后使用该令牌启动另一个进程。在编译这段的时候,需要用到SDK开发包,具体代码我也随文一并提供了。[!--empirenews.page--]分页标题[/!--empirenews.page--]


使用该程序十分方便,除了默认的路径IE外,只要你把任何程序拖进来,然后点“打开”,就能以低权限运行该程序。本文讲了半天都是围绕IE在讲,实际上,本文的目的并不单如此。大家都知道,从网上下载的黑客工具很多是被放了后门的,但我们一时又写不出这样的工具,所以只好将就着用了。如果不放心,可以放到虚拟机运行或者使用Power Shadow这样的镜像工具。但是,另一个简单的思路就是,使用低权限。用上面提到的方法照样能用到各种黑客工具上,这样就不怕工具中的后门啦。因为在低权限下后门是不能安装到电脑里的


 

(免责声明:文章内容如涉及作品内容、版权和其它问题,请及时与我们联系,我们将在第一时间删除内容,文章内容仅供参考)
收藏
  • 人气文章
  • 最新文章
  • 下载排行榜
  • 热门排行榜