爱飞 发表于 2015-1-16 22:37:50

ASP.NET编程:暴力注进Explorer

在经过全球个人PC市场占有90%的微软对asp.net不断优化与整合后,asp.net与微软自身平台的动用上更加的高效,加上asp.net在应用上非常容易上手,相信asp.net仍会是最多客户选用的脚本语言,并会在未来几年继续领跑。向一个运转中的历程注进本人的代码,最天然莫过于利用CreateRemoteThread,
现在远线程注进已是众多成灾,一样的监测远线程注进、避免远线程注进的工具也
不胜枚举,一个木马或后门启动时向Explorer或IE的注进操纵就像在本人脸上写上
“我是贼”一样。
用户态代码想要更潜伏地躲身于其余历程,就应当在注进的环节潜伏本人的行
为。上面就先容一种十分复杂不外对照暴力的办法,给出的示例为在Explorer里加
载本人的dll。
起首提到的就是一个API:QueueUserAPC

DWORDQueueUserAPC(
PAPCFUNCpfnAPC,//APCfunction
HANDLEhThread,//handletothread
ULONG_PTRdwData//APCfunctionparameter
;

人人对这个API应当其实不生疏,它间接转进了体系服务NtQueueApcThread从而利
用KeInsertQueueApc向给出的方针线程的APC行列拔出一APC工具。倘使KiDeliverApc
顺遂的往机关apc情况并实行我们的代码那统统就OK了,只惋惜没有那末顺遂的事,
ApcState中UserApcPending是不是为TRUE有主要的影响,了局常常是你比及花儿都谢了
你的代码仍是没失掉实行。在中心态常常不成成绩,本人下手赋值,但是用户态
程序可欠好做,怎样办?实在最复杂的,欠好做就不做孟低橙ジ伞
实践上使用程序在哀求“alertable”的守候时体系就会置UserApcPending为
TRUE(当KeDelayExecutionThread/KeWaitForMultipleObjects/KeWaitForSingleObject
利用TestForAlertPending时就有大概,别的另有KeTestAlertThread等,时机仍是有的
),最复杂的例子,方针线程挪用SleepEx(***,TRUE)后我们拔出APC代码就会乖乖执
行了。
对照侥幸的是Explorer历程中一样平常情形下总有合我们意的线程,因而最复杂但其实不
幽美的举措就是列举Explorer中一切线程,全数拔出,表示以下:

......
DWORDret;
char*DllName="c:MyDll.dll";
intlen=strlen(DllName)+1;
PVOIDparam=VirtualAllocEx(hProcess,NULL,len,
MEM_COMMIT|MEM_TOP_DOWN,
PAGE_READWRITE);
if(param!=NULL)
{
if(WriteProcessMemory(hProcess,param,
(LPVOID)DllName,len,&ret))
{
for(DWORDp=0;p<NumberOfThreads;p++)
{
hThread=OpenThread(THREAD_ALL_ACCESS,0,ThreadId);
if(hThread!=0)
{
InjectDll(hProcess,hThread,(DWORD)param);
CloseHandle(hThread);
}
}
}
......

个中InjectDll:
voidInjectDll(HANDLEhProcess,HANDLEhThread,DWORDparam)
{
QueueUserAPC(
(PAPCFUNC)GetProcAddress(GetModuleHandle("kernel32.dll","LoadLibraryA",
hThread,
(DWORD)param
;
}

LoadLibraryA被挪用后行将你的DLL加载进方针历程Explorer,运转是在方针历程的某
个线程情况中,一样平常你的DLL能够这时候创立本人的线程。
如许,全部历程固然有些暴力(缘故原由很分明,好比底本UserApcPending为TRUE的线程
被弄成了FALSE等等),而且仅是一次性拔出,缺点是分明的,不外拔出历程切实其实更加潜伏。

针对利用这类的“无耻”办法的程序,检/监测程序就必要增添一些判别,好比对
NtQueueApcThread的公道监测等等。

偶然候,那些最陈旧的木马假装的好反而不简单被杀。。。什么叫数据库怎么样?什么意思?你想单学数据库。(其实变成是我问的)

乐观 发表于 2015-1-19 19:30:28

ASP.net1.1和2.0在程序上的语法也有很大不同,现在2.0属于新出来的,不知道半年后会不会有3.0(说笑一下)。Windows2003系统自动支持ASP和ASP.net环境,不用安装任何程序。Asp.net属于编译语言。ASP的最大不同(ASP属于解释语言)。

仓酷云 发表于 2015-1-19 19:30:28

目前在微软的.net战略中新推出的ASP.net借鉴了Java技术的优点,使用CSharp(C#)语言作为ASP.net的推荐语言,同时改进了以前ASP的安全性差等缺点。但是,使用ASP/ASP.net仍有一定的局限性,因为从某种角度来说它们只能在微软的WindowsNT/2000/XP+IIS的服务器平台上良好运行(虽然像ChilliSoft提供了在UNIX/Linux上运行ASP的解决方案.

因胸联盟 发表于 2015-1-28 09:55:49

主流网站开发语言之ASP:ASP是微软(Microsoft)所开发的一种后台脚本语言,它的语法和VisualBASIC类似,可以像SSI(ServerSideInclude)那样把后台脚本代码内嵌到HTML页面中。虽然ASP简单易用,但是它自身存在着许多缺陷,最重要的就是安全性问题。

飘飘悠悠 发表于 2015-2-5 20:26:10

由于JSP/Servlet都是基于Java的,所以它们也有Java语言的最大优点——平台无关性,也就是所谓的“一次编写,随处运行(WORA–WriteOnce,RunAnywhere)”。除了这个优点,JSP/Servlet的效率以及安全性也是相当惊人的。

变相怪杰 发表于 2015-2-13 13:10:51

比如封装性、继承性、多态性等等,这就解决了刚才谈到的ASP的那些弱点。封装性使得代码逻辑清晰,易于管理,并且应用到ASP.Net上就可以使业务逻辑和Html页面分离,这样无论页面原型如何改变。

老尸 发表于 2015-3-3 21:44:09

有一丝可惜的是,这个系列太强了,Java阵营的朋友根本就是哑口无言...争论之火瞬间被浇灭,这不是我想这么早就看到的,但是值了。

飘灵儿 发表于 2015-3-11 13:59:31

碰到复杂点的问题都不知道能不能解决,现在有点实力的公司都选择自已在开源的基础上做开发。但没听说过有人在IIS上做改进的,windows、sqlserver集群方面的应用也很少见。

只想知道 发表于 2015-3-18 21:54:21

Asp.net:首先来说,Asp.net和Asp没什么关系,看着像是升级版本什么的,其实没什么联系。Asp是脚本编程,用的是ASP语言,而ASP.net用的是C#语言,完全不同的东西。

第二个灵魂 发表于 2015-3-26 19:10:23

能产生和执行动态、交互式、高效率的站占服务器的应用程序。运用ASP可将VBscript、javascript等脚本语言嵌入到HTML中,便可快速完成网站的应用程序,无需编译,可在服务器端直接执行。容易编写。
页: [1]
查看完整版本: ASP.NET编程:暴力注进Explorer