首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何自己实现一个Psexec

win2008流程是不一样,cs上执行主要目的还是反弹shell到cs上 大致流程: 登陆远程主机 事件ID4624 连接admin$共享 事件ID7045 写入xxxx.exe文件到共享目录下也就是...==192.168.154.31 先进行TCP三次握手 协商协议 进行NTML验证 尝试连接$IPC 尝试连接ADMIN$ 尝试写入PSEXESVC.exe 后续TCP数据包内容,4D5A,标准...pe文件 文件写入完毕后,执行API安装服务 服务启动后会建立一个管道 实际上一共创建了4个管道 整体流程跟从被连接主机事件看到流程基本一致。...lpwsServiceName, // 要安装服务名称 lpwsServiceName, // 用户界面程序用来标识服务显示名称 GENERIC_ALL...SCM本身也是一个服务程序(windowssystem32servics.exe),作为windows后台服务运行。Winlogon在系统引导早期会将SCM启动起来。

50410

psexec原理分析

ADMIN$这个是ipc共享中默认共享,通常指向C:\Windows ? 猜想就是通过这个exe上线 ?...这里肯定是与直接在win10上通过Psexec管理win2008流程是不一样,cs上执行主要目的还是反弹shell到cs上 大致流程: 1.登陆远程主机 事件ID4624 2.连接admin$...后续TCP数据包内容,4D5A,标准pe文件 ? 文件写入完毕后,执行API安装服务 ? 服务启动后会建立一个管道 ? 实际上一共创建了4个管道 ? ?...lpwsServiceName, // 要安装服务名称 lpwsServiceName, // 用户界面程序用来标识服务显示名称 GENERIC_ALL, // 访问权限 SERVICE_WIN32...SERVICE_ERROR_IGNORE, // 启动程序将忽略该错误并继续启动操作 lpwsServicePath, // 服务二进制文件标准路径 NULL, NULL, NULL, NULL, NULL

1.1K40
您找到你想要的搜索结果了吗?
是的
没有找到

Simple Windows Service in C++

本文是来自CodeProject中一篇名为Simple Windows Service in C++译文,原文地址:https://www.codeproject.com/Articles/499465...我刚创建了一个空Win32控制台应用程序。 在我们开始主入口程序点之前,我们需要声明一些将在整个服务中使用全局变量。为了更加面向对象,你始终可以创建一个表示服务类,并使用类成员代表全局变量。...SERVICE_STATUS_HANDLE g_StatusHandle = NULL; 下面是一些额外全局变量和函数声明,随着我们继续将被使用和解释。    ...(3)将服务状态设置SERVICE_PENDING,然后设置SERVICE_RUNNING。 在任何错误和退出时将状态设置SERVICE_STOPPED。...当状态设置SERVICE_STOPPED或SERVICE_PENDING时,始终将SERVICE_STATUS.dwControlsAccepted设置0。 (4)执行启动任务。

73010

打开文件夹就运行?COM劫持利用新姿势

利用方法 作为演示,我们执行代码功能为,弹出一个类似与下图对话框,其中显示出了调用这个DLL进程路径及PID信息。...打开文件夹,成功利用 利用步骤很简单,其中最为关键是我们实现代码dll以及CLSID选择,这不是一个普通dll,而是dll中”战斗dll”,这是一个实现了COM接口dll,并且在dll导出函数返回值有特殊要求...具体可以参见文末附件中代码。 背后故事 通过上面的图,可以看出,我们DLL实际上是由verclsid.exe加载。而verclsid.exe是通过shell32.dll中函数调用起来。...综全上面的过程,要想成功利用,只要使CreateProcessW函数调用verclsid.exe结束时exitcode等于0。...随后会调用 ppv->Release() CoUninitialize() 然后,函数就正常返回,当函数正常返回时,verclsid.exeexitcode等于0。

1.6K80

Simple Windows Service in C++

本文是来自CodeProject中一篇名为Simple Windows Service in C++译文,原文地址:Simple Windows Service in C++,作者:Mohit...源代码下载地址:Download sample-SampleService或者Github地址 介绍 这篇文章展示如何使用C++创建一个基本Windows服务程序。...我刚创建了一个空Win32控制台应用程序。 在我们开始主入口程序点之前,我们需要声明一些将在整个服务中使用全局变量。为了更加面向对象,你始终可以创建一个表示服务类,并使用类成员代表全局变量。...SERVICE_STATUS_HANDLE g_StatusHandle = NULL; 下面是一些额外全局变量和函数声明,随着我们继续将被使用和解释。...当状态设置SERVICE_STOPPED或SERVICE_PENDING时,始终将SERVICE_STATUS.dwControlsAccepted设置0。 (4)执行启动任务。

3.6K20

java 执行shell命令及日志收集避坑指南

:Runtime.getRuntime().exec("cmd.exe /c dir") ; 看起来非常简洁。...(但实际上底层与Runtime是一样了),用例如下: public class ProcessBuilderTest { @Test public void testProcessBuilder...它实际上并不能直接抛出异常,我们可以通过进程返回码来判定是否发生了异常,这些错误码一般会遵循操作系统错误定义规范,但时如果是我们自己写shell或者其他同学写shell就无法保证了。...所以,往往除了我们要捕获错误之外,至少要规定0正确返回码。其他错误码也尽量不要乱用。其次,我们还应该在发生错误时,能从错误输出流信息中,获取到些许蛛丝马迹,以便我们可以快速排错。   ...基本上,我们通过线程池来控制进程膨胀问题;通过读取io流来解决异常信息问题;通过调用类型规划内存及用量问题; 3. 完整shell调用参考   说了这么多理论,还不如来点实际

2.5K10

干货 | 最全Windows权限维持总结

放大镜:C:\Windows\System32\Magnify.exe 旁白:C:\Windows\System32\Narrator.exe 显示切换器 C:\Windows\System32\DisplaySwitch.exe...我们可以将 EXE /DLL等可执行文件注册服务实现后门持久化。...我们可以用assoc命令显示或修改文件扩展名关联,我们可以看一下.txt文件关联。 ? 用ftype命令显示或修改用在文件扩展名关联中文件类型。 ?...,预防老化与缩短屏幕显示器老化一种保护程序。...总结 一边复现一边写,发现很多都需要权限,或者说如果有更高权限能做事更加多,包括很多操作现在已经被各种终端设备监控,所以维权实际上是建立在免杀和提权之后。我总结可能不太全面,欢迎补充。 ?

2.7K30

【.net 深呼吸】启动一个进程并实时获取状态信息

首先完成被调用项目,项目类型Windows应用程序项目。 ? 不管它,反正就是一个标准.exe文件,这个项目我是先建个空白项目,然后手动设置。 每个可执行程序都必须至少有一个Main方法。...如果Flush的话,写入内容会放在缓冲区中,直接流关闭或执行Flush时才会真正发送到标准流上,所以,每写完一次都调用一下Flush方法,确保调用方能够实时收到信息。...最后那一行Environment.ExitCode = 0 表示进程退出时返回退出码0,即正常退出。因为我这个Main是返回void,所以要用Enviroment类ExitCode来设置。...\\Demo\\bin\\Debug\\Demo.exe"; p.StartInfo.UseShellExecute = false; //必须false...CreateNoWindow表示不显示目标程序窗口,这个你自己看着办,这里我不让它显示窗口,因为这个程序本来就没有窗口。

91160

【Qt源码笔记】万般皆是int main

经常写 Qt 程序,就会发现,不管是写控制台程序还是带窗体应用程序,在 Qt 中入口都是int main()。但实际上抛开其他平台不说,就是在 Windows 平台上,二者入口就是有区别的。..., 0, NULL, NULL); char *result = new char[required]; WideCharToMultiByte(codePage, 0, aw, -1,...result, required, NULL, NULL); return result; } extern "C" int APIENTRY WinMain(HINSTANCE, HINSTANCE...; } 这个文件中不难看出,我在自己工程中使用 int main() 其实就是 const int exitCode = main(argc, argv); 这一行中 main 了。...查看他内容,一切都真相大白。在 link 部分,会发现 qtmain.lib 文件会被链接到 exe 中。而这一步操作,应该就是 VS 中 Qt 插件功劳了。

62840

C# 获取进程退出代码

函数返回值一样 在 C# 如果想要实现 C 语言 main 函数返回值,是通过调用 Environment.Exit 方法 那么其他程序如何拿到这个程序退出代码?...需要其他程序先拿到这个程序进程,如果是在其他程序启动这个程序,那么通过 Process 就可以拿到 如我有两个程序,一个是控制台程序,这个控制台程序是 控制台.exe 还有一个 WPF 程序,通过 WPF...")}; _process = process; process.Start(); } 在 WPF 程序按钮按下尝试通过 _process.ExitCode...通过这个方法就可以拿到启动进程返回值,如果不是在 WPF 启动控制台程序,也可以在进程退出之前使用下面代码拿到进程 var process = Process.GetProcessById(控制台进程...); 如果在进程退出之后才尝试去获取进程就会出现下面代码 System.ArgumentException:“ID xx 进程当前未运行。”

2.4K20

C# 获取进程退出代码

函数返回值一样 在 C# 如果想要实现 C 语言 main 函数返回值,是通过调用 Environment.Exit 方法 那么其他程序如何拿到这个程序退出代码?...需要其他程序先拿到这个程序进程,如果是在其他程序启动这个程序,那么通过 Process 就可以拿到 如我有两个程序,一个是控制台程序,这个控制台程序是 控制台.exe 还有一个 WPF 程序,通过 WPF...")}; _process = process; process.Start(); } 在 WPF 程序按钮按下尝试通过 _process.ExitCode...请看代码 通过这个方法就可以拿到启动进程返回值,如果不是在 WPF 启动控制台程序,也可以在进程退出之前使用下面代码拿到进程 var process = Process.GetProcessById...(控制台进程); 如果在进程退出之后才尝试去获取进程就会出现下面代码 System.ArgumentException:“ID xx 进程当前未运行。”

1.5K20

【C#】分享基于Win32 API服务操作类(解决ManagedInstallerClass.InstallHelper不能带参数安装问题)

推荐,既然都用托管方法,何不用更好方法呢 用ManagedInstallerClass.InstallHelper进行安装。这个我认为是托管方法中首选方法,事实上它就是对上述两个安装类封装。...,它通过传入main方法参数决定是以服务运行,还是以桌面程序运行(这里讨论为什么不把服务和桌面程序分成两个exe。...所以好好研究了一下InstallHelper实现,大概套路是这样: exe所属程序集创建AssemblyInstaller,AssemblyInstaller会负责创建程序集中所有标记有RunInstallerAttribute...特性实例,并将它们加入一个installer集合,最后由TransactedInstaller埃个执行这些installer,实际上就是各个installer实例执行各自Install方法。...即只支持一个exe里只承载一个服务情况,不支持多服务共享一个exe情况。

1.4K20
领券