如何在远程系统执行程序

2023-12-12 23:59
文章标签 系统 远程 执行程序

本文主要是介绍如何在远程系统执行程序,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

序言

在我们获得用户名口令后,尝试远程登陆目标主机并执行程序,结合实际环境做了如下测试.

目标

远程登陆目标主机执行测试程序

测试环境

远程主机:

ip:192.168.40.137   
用户名:test
口令:testtest
操作系统:win7 x64
远程登陆方式:net use远程登陆,不使用3389

Tips:
解决工作组环境无法远程登陆执行程序的方法:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System add a new DWORD (32-bit) called “LocalAccountTokenFilterPolicy” and set it to 1

测试方法

1、at&schtasks
计划任务方式执行程序。
条件:
启动Task Scheduler服务

2、psexec
PsTools工具之一,在指定的一台或多台计算机上运行应用程序
条件:
需要开放ADMIN$共享

3、WMIC
功能强大,可做系统管理、远程主机信息获取
条件:
启动WMI服务,开放135端口
本地安全策略的“网络访问: 本地账户的共享和安全模式”应设为“经典-本地用户以自己的身份验证”

4、wmiexec
使用VBS脚本调用WMI来模拟psexec的功能,基本上psexec能用的地方,这个脚本也能够使用。
条件:
启动WMI服务,开放135端口
本地安全策略的“网络访问: 本地账户的共享和安全模式”应设为“经典-本地用户以自己的身份验证”

5、powershell remoting
实现在目标主机远程执行程序后,可对目标主机开放powershell remoting,用作远程连接
条件:

远程连接会有痕迹
本机要开启winRM服务
命令汇总:

列出所有远程信任主机 powershell Get-Item WSMan:\localhost\Client\TrustedHosts 设置信任所有主机 powershell Set-Item WSMan:\localhost\Client\TrustedHosts -Value * -Force 设置允许运行ps1文件 powershell Set-ExecutionPolicy Unrestricted 执行test.ps1文件 powershell -ExecutionPolicy Bypass -File test.ps1 ps1文件如下:$UserName = "test" $serverpass = "testtest" $Password = ConvertTo-SecureString $serverpass -AsPlainText –Force $cred = New-Object System.Management.Automation.PSCredential($UserName,$Password) invoke-command -ComputerName 192.168.40.137 -Credential $cred -ScriptBlock { ipconfig }

6 、python smbexec

随后用python写的smbexec也实现了相同的功能,但py2exe的时候遇到了大麻烦,如果有更简单的方法, 希望能得到你的帮助。

实际测试

使用用户名口令远程登陆192.168.40.137,如图1

查看目标主机共享资源,如图1-2

1、at&schtasks

at \\192.168.40.137

找不到网络路径,判断是目标主机已禁用Task Scheduler服务

2、psexec

PsExec.exe \\192.168.40.137 /accepteula -u test -p testtest -c c:\runtest\calc.exe

找不到网络名,判断目标主机已禁用ADMIN$共享

3、WMIC

wmic /node:192.168.40.137 /user:test /password:testtest process call create calc.exe

Description = 无法启动服务,原因可能是已被禁用或与其相关联的设备没有启动,判断WMI服务被禁用

4、wmiexec

cscript.exe wmiexec.vbs /cmd 192.168.40.137 test testtest "ipconfig"

WMIEXEC ERROR: 无法启动服务,原因可能是已被禁用或与其相关联的设备没有启动,判断WMI服务被禁用

分析

整理下目前掌握的目标主机信息:

目标主机:

1、已获得登陆用户名及口令
2、可以net use连接
3、开放共享C
但是:

1、默认admin$共享关闭,无法使用psexec
2、Task scheduler关闭,无法使用at、schtasks
3、Windows Management Instrumentation服务关闭,关闭135端口无法使用wmic、wmiexec
4、不支持3389
那么,如何在目标主机远程执行程序?

猜测管理员应该是对常用的远程执行程序的方法做了限制,就在一筹莫展的时候突然想到了smbexec,它是基于psexec,如果目标主机开放了其他默认共享,倒是可以尝试smbexec

于是搜索smbexec,终于在GitHub上面找到了一个smbexec的c++参考资料,作为工具改进模版

模版下载地址:

https://github.com/sunorr/smbexec

总结

这篇文章共列举了六种远程执行程序的方法,如果已经成功登陆目标主机,却无法执行程序,最心塞的事情莫过于此。

at psexec WMIC wmiexec smbexec powershell remoting ...

获得用户名口令,实现远程执行程序仅仅是个开始,内网渗透会很有趣。

新书:《内网安全攻防:渗透测试实战指南》火爆上市!

购买链接:https://item.jd.com/12743210.html

Ms08067安全实验室

专注于普及网络安全知识。团队已出版《Web安全攻防:渗透测试实战指南》,2019年11月出版《内网安全攻防:渗透测试实战指南》目前在编Python渗透测试,JAVA代码审计和逆向工程等方面书籍。

团队公众号定期分享关于CTF靶场、内网渗透、APT方面技术干货,从零开始、以实战落地为主,致力于做一个实用的干货分享型公众号。

官方网站:www.ms08067.com

这篇关于如何在远程系统执行程序的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/486408

相关文章

Python FastAPI+Celery+RabbitMQ实现分布式图片水印处理系统

《PythonFastAPI+Celery+RabbitMQ实现分布式图片水印处理系统》这篇文章主要为大家详细介绍了PythonFastAPI如何结合Celery以及RabbitMQ实现简单的分布式... 实现思路FastAPI 服务器Celery 任务队列RabbitMQ 作为消息代理定时任务处理完整

Linux系统中卸载与安装JDK的详细教程

《Linux系统中卸载与安装JDK的详细教程》本文详细介绍了如何在Linux系统中通过Xshell和Xftp工具连接与传输文件,然后进行JDK的安装与卸载,安装步骤包括连接Linux、传输JDK安装包... 目录1、卸载1.1 linux删除自带的JDK1.2 Linux上卸载自己安装的JDK2、安装2.1

Linux系统之主机网络配置方式

《Linux系统之主机网络配置方式》:本文主要介绍Linux系统之主机网络配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、查看主机的网络参数1、查看主机名2、查看IP地址3、查看网关4、查看DNS二、配置网卡1、修改网卡配置文件2、nmcli工具【通用

Linux系统之dns域名解析全过程

《Linux系统之dns域名解析全过程》:本文主要介绍Linux系统之dns域名解析全过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、dns域名解析介绍1、DNS核心概念1.1 区域 zone1.2 记录 record二、DNS服务的配置1、正向解析的配置

Linux系统中配置静态IP地址的详细步骤

《Linux系统中配置静态IP地址的详细步骤》本文详细介绍了在Linux系统中配置静态IP地址的五个步骤,包括打开终端、编辑网络配置文件、配置IP地址、保存并重启网络服务,这对于系统管理员和新手都极具... 目录步骤一:打开终端步骤二:编辑网络配置文件步骤三:配置静态IP地址步骤四:保存并关闭文件步骤五:重

Java进阶学习之如何开启远程调式

《Java进阶学习之如何开启远程调式》Java开发中的远程调试是一项至关重要的技能,特别是在处理生产环境的问题或者协作开发时,:本文主要介绍Java进阶学习之如何开启远程调式的相关资料,需要的朋友... 目录概述Java远程调试的开启与底层原理开启Java远程调试底层原理JVM参数总结&nbsMbKKXJx

Windows系统下如何查找JDK的安装路径

《Windows系统下如何查找JDK的安装路径》:本文主要介绍Windows系统下如何查找JDK的安装路径,文中介绍了三种方法,分别是通过命令行检查、使用verbose选项查找jre目录、以及查看... 目录一、确认是否安装了JDK二、查找路径三、另外一种方式如果很久之前安装了JDK,或者在别人的电脑上,想

Python结合Flask框架构建一个简易的远程控制系统

《Python结合Flask框架构建一个简易的远程控制系统》这篇文章主要为大家详细介绍了如何使用Python与Flask框架构建一个简易的远程控制系统,能够远程执行操作命令(如关机、重启、锁屏等),还... 目录1.概述2.功能使用系统命令执行实时屏幕监控3. BUG修复过程1. Authorization

Linux系统之authconfig命令的使用解读

《Linux系统之authconfig命令的使用解读》authconfig是一个用于配置Linux系统身份验证和账户管理设置的命令行工具,主要用于RedHat系列的Linux发行版,它提供了一系列选项... 目录linux authconfig命令的使用基本语法常用选项示例总结Linux authconfi

Nginx配置系统服务&设置环境变量方式

《Nginx配置系统服务&设置环境变量方式》本文介绍了如何将Nginx配置为系统服务并设置环境变量,以便更方便地对Nginx进行操作,通过配置系统服务,可以使用系统命令来启动、停止或重新加载Nginx... 目录1.Nginx操作问题2.配置系统服android务3.设置环境变量总结1.Nginx操作问题