曾经碰到一种奇怪的Crash场景:Windows程序Crash,每次用windbg attach或者ntsd/cdb产生dump,总是不能捕获到程序出错时候的栈,而且crash的时候只能看到少数甚至只剩一个线程的信息,而这个仅有的一些线程函数调用栈,也并不是导致程序Crash的地方。
Terminates the specified process and all of its threads.
这个自我保护实际上是加载360SelfProtection.sys驱动(看这名字应该还有360SelfProtection_win10.sys文件),在0环通过hook等手段保护注册表项,重要进程进程等。
首先来谈谈一个进程的执行流程。每个应用程序都有个主函数,在WINDOWS下,只支持两种类型的应用程序——CUI(控制台应用程序)和GUI(图形界面应用程序),相应的,其主函数类型不同。来看下这几个入口函数
程序列表里有一个正在运行的notepad2.exe,它的进程号是22516,下面通过编写代码将进程号是22516的程序杀掉。
<2>进程中的一个线程调用ExitProcesss函数(应该避免使用这样的方法)。
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/126159.html原文链接:https://javaforall.cn
在进行实战攻防中,免杀是在突破边界防御后面临的首要问题,在通过建立据点,横向移动来扩大攻击成果的过程中,都有杀软在进行拦截,现在常用的免杀手法,例如反射型dll注入、直接系统调用、加密混淆等,都是在解决如何躲避杀软的查杀。而对于免杀来说,一劳永逸的解决方法,毫无疑问是在杀软的监控下关闭杀软。本文通过windows打印机漏洞(CVE_2021_1675)来加载签名驱动,并通过调用驱动的方式来实现从内核层关闭杀软。
来源:https://pentest.blog/offensive-iat-hooking/
IAT是程序中存储导入函数地址的数据结构,如果HOOK了导入函数地址。就可以在函数调用的时候,将函数流程HOOK到我们指定的流程。但是我个人觉得这种方式最好要结合DLL注入的方式,如果单纯的使用HOOK,那么就需要将需要执行的操作的shellcode写入目标进程,如果操作复杂,可能需要的shellcode量特别大,所以我们需要借助DLL注入,这样就将我们需要执行的代码写入进程内部,在HOOK的Detour函数只需要实现LoadLibrary的操作。
在Python中,可以方便地使用os模块来运行其他脚本或者程序,这样就可以在脚本中直接使用其他脚本或程序提供的功能,而不必再次编写实现该功能的代码。为了更好地控制运行的进程,可以使用win32process模块中的函数,如果想进一步控制进程,则可以使用ctype模块,直接调用kernel32.dll中的函数. 【方式一】使用os.system()函数运行其他程序 os模块中的system()函数可以方便地运行其他程序或者脚本,模式如下: os.system(command) command: 要执行
在Python中,可以方便地使用os模块来运行其他脚本或者程序,这样就可以在脚本中直接使用其他脚本或程序提供的功能,而不必再次编写实现该功能的代码。
最近在实验室用ftp下点东西,但是由于实验室晚上12点就会断电。于是 需要在此之前关掉机器,图省事就用WindowsXP自带的计划任务每次设置 成11:50就调用“shutdown -s”命令自动关机。但是好几次都发现没法 正常关机,第二天早上起来就会检测磁盘。于是就做了个实验,发现确实 当使用flashfxp下载东西时,关机会不能正常关机,等待确定终止flashfxp 程序。
在GitHub上看到了一个利用SilentProcessExit机制dump内存的项目,于是学习了一下,于是今天来聊一聊利用SilentProcessExit机制dump内存,首先我们知道,在程序崩溃时或者系统崩溃时会产生崩溃后的文件。比如之前就有一篇文章,介绍的就是利用蓝屏崩溃来绕过卡巴斯基dump lsass进程(https://www.mrwu.red/web/2000.html),而在win7之后,windows引入一些进程退出的相关机制,即Selftermination的ExitProcess.与Crossprocesstermination的TerminateProcess.而我们今天所说的则是Silent Process Exit,即静默退出。而这种调试技术,可以派生 werfault.exe进程,可以用来运行任意程序或者也可以用来转存任意进程的内存文件或弹出窗口。若派生新进程的话其进程树如下:
当一个进程被保护的时候 比如无法获取其进程句柄权限 (OpenProcess) 或者无法获取内存读写访问权限的时候,则可以使用此方法来进行提权。
SHELLEXECUTEINFO 是Windows API ShellExecuteEx的参数,这个是一个结构体类型,里面可以添加参数,当IpVerb成员为 “runas”的时候可以提升启动进程的权限,如果不设置,会继承父进程的权限,ShellExecuteEx
if(OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES,&hToken)) { TOKEN_PRIVILEGES tp; tp.PrivilegeCount = 1 ; ::LookupPrivilegeValue(NULL,SE_DEBUG_NAME,&tp.Privileges[0].Luid); AdjustTokenPrivileges(hToken,FALSE,&tp,sizeof(tp),NULL,NULL);
#include "TlHelp32.h" void CKillProcessDlg::OnBnClickedOk() { // TODO: 在此添加控件通知处理程序代码 //OnO
下面的代码需要Windows API和Python标准库ctypes的相关知识。 from ctypes.wintypes import * from ctypes import * kernel32 = windll.kernel32 class tagPROCESSENTRY32(Structure): #定义结构体 _fields_ = [('dwSize', DWORD), ('cntUsage', DWORD),
#include //系统会自动连接到指定的库文件lib #include //std io 标准输入输出接口 #include using namespace std; int main() { char szCommandLine[] = "cmd"; STARTUPINFO si = {sizeof(si)};// PROCESS_INFORMATION pi; si.dwFlags = STARTF_USESHOWWINDOW;//指定wShowWindow成员有效 si.wSho
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/126475.html原文链接:https://javaforall.cn
Windows编程之进程遍历 PS: 主要扣代码使用,直接滑动到最下面使用. 遍历进程需要几个API,和一个结构体 1.创建进程快照 2.遍历首次进程 3.继续下次遍历 4.进程信息结构体 API 分别是: 1.创建进程快照 HANDLE WINAPI CreateToolhelp32Snapshot( 进程快照API DWORD dwFlags, 遍历的标志,表示你要遍历什么(进程,模块,堆...) DWORD t
最近,在看雪上看到了一个高中生分享的自学经历,想起之前也有很多高中甚至初中肄业的朋友向我咨询学习路线,分享给大家看一看。
最近在研究oj系统,查过网上的解决方案,大致分为两种: 一种是基于Java虚拟机的解决方案,让编译好的程序运行在java虚拟机里面,通过对虚拟机的限制保障时空有效性和系统安全性; 第二种是基于linux系统的方案,通过内置的系统函数设置程序可用资源以及通过限制用户运行此程序以保障系统安全性. 实际情况是希望在windows下实现oj系统,而且对jvm无爱,遂研究下通过windows的一些内核机制实现此目的. 根据上面的第二种解决方案后查阅MSDN及相关资料后得知windows下没有设置程序可用资源的函数,
从知道python开始,我的视线里就没缺少过他。尤其是现如今开发语言大有傻瓜化的趋势。而作为这一趋势的领导,脚本语言就显得格外亮眼。不管是python还是ruby,perl,都火的不得了。就连java都出了个脚本语言版本,好像是叫Groovy,号称下一代的java。
在上面的各种Hook挂钩方式中,我们都是在手写封装代码,但这样的方式并不高效,真正的生产环境中我们必须使用现成的Hook库,常用的Hook库有免费开源的MinHook和商业的Detours Hook,这里我们就选择介绍MinHook这个迷你函数库,该Hook库是完全开源免费的,使用起来也非常的简单.
前些天一直在研究Ring3层的提前注入问题。所谓提前注入,就是在程序代码逻辑还没执行前就注入,这样做一般用于Hook API。(转载请指明出处)自己写了个demo,在此记下。
# "这段代码来自于一个很简单的场景: 在python中调一个程序。给这个程序设置一个timeout 假如一段时间程序还没有返回,就杀掉这个这个新开的进程。" import ctypes import sys TH32CS_SNAPPROCESS = 0x00000002 class PROCESSENTRY32(ctypes.Structure): fields = [("dwSize", ctypes.c_ulong), ("cntUsage", ctypes
2021年4月23日 晴。 结束了这一天的工作,回到酒店准备洗完澡朋友朋友搓两把war3。 洗澡的过程中,蹦出了一个想法:如何优雅简洁地把自身进程变为杀软可信的进程呢? 一直想到洗完澡,突然想到:父进程如果是系统进程比如services.exe csrss.exe之类的不就好了。灵光一闪:即时调试器!如果设置了即时调试器,当程序发生异常后不就会自行启动了!!! 当即我就鸽了朋友开始新建项目。 写好的恶意程序设置为即时调试器时,然后添加自启动。 果然杀软没拦截,而且最顶级的父进程居然是wininit.exe
Hook 技术通常被称为钩子技术,Hook技术是Windows系统用于替代中断机制的具体实现,钩子的含义就是在程序还没有调用系统函数之前,钩子捕获调用消息并获得控制权,在执行系统调用之前执行自身程序,简单来说就是函数劫持,本笔记将具体介绍应用层Hook的实现机制。
谷歌 Chrome 浏览器很好很强大,一直以来都以简单快速、插件丰富、安全性能高而著称。
现在大部分人都喜欢使用Popen。Popen方法不会打印出cmd在linux上执行的信息。的确,Popen非常强大,支持多种参数和模式。使用前需要from subprocess import Popen, PIPE。但是Popen函数有一个缺陷,就是它是一个阻塞的方法。如果运行cmd时产生的内容非常多,函数非常容易阻塞住。解决办法是不使用wait()方法,但是也不能获得执行的返回值了。
在Python中某些时候需要C做效率上的补充,在实际应用中,需要做部分数据的交互。使用python中的ctypes模块可以很方便的调用windows的dll(也包括linux下的so等文件),下面将详细的讲解这个模块(以windows平台为例子),当然我假设你们已经对windows下怎么写一个DLL是没有问题的。 引入ctypes库
0x01 进程遍历 因为进程是在随时进行变动的所以我们需要获取一张快照 1.1 CreateToolhelp32Snapshot HANDLE CreateToolhelp32Snapshot( DWORD dwFlags, DWORD th32ProcessID); 因为要获取进程第一个参数选择TH32CS_SNAPPROCESS来获取系统中所有的进程,具体可以参考[CreateToolhelp32Snapshot]:https://docs.microsoft.com/zh-cn/windows/w
AppInfo是一个本地RPC服务,其接口ID为201ef99a-7fa0-444c-9399-19ba84f12a1a,AppInfo 是 UAC 提升的关键。ShellExecuteEx()通过 RPC 调用将所有提升请求转发到 AppInfo NT 服务。AppInfo 在系统上下文中调用一个名为“approve.exe”的可执行文件,这是启动用户同意的对话框的可执行文件.
之前几篇文章主要介绍和分析了为什么会在DllMain做出一些不当操作导致死锁的原因。本文将总结以前文章的结论,并介绍些DllMain中还有哪些操作会导致死锁等问题。(转载请指明出于breaksoftware的csdn博客) DllMain的相关特性
Github https://github.com/gongluck/Windows-Core-Program.git //第4章 进程.cpp: 定义应用程序的入口点。 // #include "stdafx.h" #include "第4章 进程.h" #include <shellapi.h> #pragma warning(disable:4996)//GetVersionEx int APIENTRY wWinMain(_In_ HINSTANCE hInstance,
手动创建多线程: 多线程的创建需要使用CreateThread()其内部应该传递进去ThreadProc()线程执行函数,运行结束后恢复.
三个SDK函数: WinExec, ShellExecute,CreateProcess
本篇继续阅读学习《内网安全攻防:渗透测试实战指南》,是第四章权限提升分析及防御,本章主要分析了系统的内核溢出漏洞提权、利用Windows操作系统错误配置提权、利用组策略首选项提权、绕过UAC提权、令牌窃取及无凭证条件下的权限获取,并提出了相应的安全防范措施
Python在2.6引入了多进程的机制,并提供了丰富的组件及api以方便编写并发应用。multiprocessing包的组件Process, Queue, Pipe, Lock等组件提供了与多线程类似的功能。使用这些组件,可以方便地编写多进程并发程序。
之前一期我们学习了 IAT 的基本结构,相信大家对 C++ 有了一个基本的认识,这一期放点干货,我把 ring3 层恶意代码常用的编程技术给大家整理了一下,所有代码都经过我亲手调试并打上了非常详细的注释供大家学习,如下图:
腾讯御见威胁情报中心监测到网上一款编译好的RDP漏洞(亦有安全专家命名为RDS漏洞)检测工具在流行,这款工具并非来自权威安全厂商或知名研究小组。为了让戏更足一些,有人还给此款工具配上漂亮的解说blog,如下图所示。在Blog的末尾附上这款RDP漏洞检测工具的网盘下载地址,不过很快blog和网盘链接都已失效。腾讯安全专家对该工具进行技术分析,结果发现这是一出谍中谍的好戏:有人假冒安全研究者煞有介事的编造了一个故事,利用你对安全工具的好奇心,钓你上钩。
模仿windows任务管理器制作一个任务管理器软件。设计语言不限。 二知识要求 Windows编程,MFC编程,API调用 三.开发环境 使用Microsoft Visual Studio 2013的开发环境,模拟Windows的任务管理器。首先分析进程管理器软件的相关功能;其次,综合运用以前所学的相关知识,广泛查阅资料。 四.主要功能及实现思路 4.1设计要求实现的主要功能进程管理功能,具体包括以下内容: (1) 使用系统API。 (2) 制作出相应的图形用户界面。 (3) 至少包括三个功能: 获取
基于RPA,有很多的产品,其中 Power Automate Desktop (PAD)就是一个相对来讲,免费的,容易使用的一个RPA,另外它的国际化做的也很不错,中文效果也是很棒。
众所周知,python本身是单线程的,python中的线程处理是由python解释器分配时间片的;但在python 3.0中吸收了开源模块,开始支持系统原生的进程处理——multiprocessing. 注意:这个模块的某些函数需要操作系统的支持,例如,multiprocessing.synchronize模块在某些平台上引入时会激发一个ImportError 1)Process 要创建一个Process是很简单的。
subprocess.DEVNULL:可传递给stdin, stdout, stderr参数的特殊值,意味着将使用特殊文件os.devnull重定向输入输出
不知道大家是否思考过一个过程:系统试图运行我们写的程序,它是怎么知道程序起始位置的?很多同学想到,我们在编写程序时有个函数,类似Main这样的名字。是的!这就是系统给我们提供的控制程序最开始的地方(注意这儿是提供给我们的,而实际有比这个还要靠前的main)。于是看到DllMain就可以想到它是干嘛的了:Dll的入口点函数。那何时调用这个函数的呢?以及各种调用场景都传给了它什么参数呢?(转载请指明出于breaksoftware的csdn博客)
领取专属 10元无门槛券
手把手带您无忧上云