如何获取线程关联用户名和域名

SRC漏洞挖掘实战:从测试域名切入的高效资产发现与深度利用 在网络安全领域,资产发现与漏洞挖掘是核心环节,其原理在于通过主动侦察与被动监听,识别目标系统的薄弱点。这项技术的价值在于能够以远低于攻击成本的投入,提前发现潜在安全风险,从而构建主动防御体系。其应用场景广泛,尤其适用于企业安全测试、渗透测试以及安全应急响应中心(SRC)的漏洞挖掘活动。在SRC漏洞挖掘中,测试域名因其防护薄弱且与生产环境逻辑相似,常成为高效突破口。通过系统性地进行子域名枚举、证书透明日志分析以及代码仓库信息搜集,可以构建精准的测试资产雷达。结合自动化工具链对发现的资产进行指纹识别与深度漏洞探 阅读详情
在Windows NT/2000/XP上编写程序时,有时会需要我们获取与当前调用线程关联的用户名和域名(domain),本文下面将示范在Windows NT/2000/XP环境里如何使用Win32 API有关安全的函数来获取用户名和域名。
在Windows NT之前,一般都假设某个线程是运行在登录用户的帐号之下。但Windows NT问世以后,允许线程可以在多个安全上下文中运行,言下之意就是一个线程对多个用户。例如,在客户/服务器(C/S)应用中,服务器的某个线程可以通过 ImpersonateNamedPipeClient 函数模仿一个客户。在这种情况下,它运行在该客户端的用户上下文中。另一个运行在不同安全上下文中的线程例子是服务线程,它具备 NT AUTHORITY 域名和 SYSTEM 用户名,并且运行在本地系统账号之下。
如果当前线程的用户名和域名两者你都需要,则必须首先调用 OpenThreadToken 打开与某个线程关联的存取令牌:

if(!OpenThreadToken(GetCurrentThread(), TOKEN_QUERY, TRUE, &hToken)) {

if(GetLastError() == ERROR_NO_TOKEN) {
//
// 如果得不到线程令牌,则试图打开进程令牌。
//
if(!OpenProcessToken(GetCurrentProcess(), TOKEN_QUERY, &hToken )) {
......
}
}
else {
//
// 存取线程令牌出错。
//
......
}

......
}
如果与当前线程关联的存取令牌不存在,则调用 OpenProcessToken 获取与当前进程关联的存取令牌。
一旦得到线程或进程的存取令牌,便可以调用 GetTokenInformation 函数从线程的存取令牌中获取用户安全标示,也就是 SID: bSuccess = GetTokenInformation(hToken,
TokenUser,
InfoBuffer,
cbInfoBuffer,
&cbInfoBuffer);
if(!bSuccess) {
......
}
else {
bRet = LookupAccountSid(NULL, ((PTOKEN_USER)InfoBuffer)->User.Sid,
UserName,
cchUserName,
DomainName,
cchDomainName,
&snu );
if (!bRet) {
......
CloseHandle(hToken);
......
}
else {
// 显示得到的 用户名和域名

SetDlgItemText(IDC_STATIC_USRN,UserName);
SetDlgItemText(IDC_STATIC_DOMAIN,DomainName);
......
}

......

}
最后,调用 LookupAccountSid 函数获取与该SID关联的账号名和域名,详细实现细节请参考本文的例子代码。图一是例子程序运行的画面:


图一 获取用户名和域名例子程序

在编写本文例子程序时,本来想写一个简单的控制台程序。但是很不幸,我碰到这样一个百思不得其解的问题:在控制台程序中调用LookupAccountSid函数,总是得到一个失败的返回,GetLastError() 函数指示的出错代码是14,也就是"存储器不足,无法完成此操作。"但在非控制台程序中调用是没有问题的。目前我还在继续琢磨这个问题。如果哪位已经知道其中的原因,不妨指点一二,以免我 再走弯路……。为了交流方便,我将控制台程序和非控制台程序的源代码都提供出来,以便参考。
上面提到的几个32位函数不支持 Windows 9x。如果想存取Windows 95 或 Windows 98 系统中的用户名和交互用户的域信息,则必须调用16位LAN Manager 函数。详细实现细节请参考MSDN库的有关内容。
注意:如果仅仅需要获取用户名,那么调用 GetUserName 足矣,这个函数支持 Windows 9x、Windows NT 以及 Windows 2000。在 Windows NT 和 Windows 2000 系统中,此函数首先检查调用线程是否具备专门的存取令牌,如果得到令牌,则返回与调用线程关联的用户名,否则,返回与调用进程关联的用户名。

最后,祝大家身体健康!编程愉快! 
 
从Basic认证爆破到子域名枚举:CTF与渗透测试中的五个关键技巧 在网络安全领域,信息收集与弱口令爆破是渗透测试CTF竞赛的基础环节,其核心在于自动化与精准识别。Basic认证作为HTTP协议中最简单的认证机制,其原理是将用户名密码进行Base64编码后传输,而爆破的本质则是通过字典组合自动化这一过程,并依赖多维度(如状态码、响应长度、关键词)进行结果验证。这一技术的价值在于能够系统性地发现目标入口点,广泛应用于对Web应用登录接口的安全评估。子域名枚举则进一步扩展了攻击面,通过字典爆破、证书透明度日志查询等多种途径发现外围资产。本文以CTFshow平台题型为背景,深入 阅读详情

相关推荐

获取WINDOWS是否登录及登录用户名(支持服务模式)

用户已经登录了WINDOWS的情况下,普通程序通过GetUserName可以获得当前登录的用户名,但是在服务模式下,却是无法获得正确的信息,并且无法判断用户是否登录。本函数很简洁,用来支持在服务模式下能判断出是否有用户进行了登录,用户是否登出等状态,并且能够获得登录用户用户名。 这段代码主要是给服务程序使用的,代码为C++代码,VS2013编译通过,希望能帮助到有同样困惑的朋友。

mme设备内部错误_微软向内部人员发布Windows 10 build 19042.662

微软宣布将Windows 1020H2 Build19042.662(KB4586853)发布到Beta版本预览通道,供那些使用20H2的内部人员使用(Windows 10 October 2020 Update)。此更新包括以下修复改进:Microsoft更新了Internet Explorer的“关于”对话框,以使用标准的现代对话框。Microsoft解决了一个问题...

weixin_39655981的博客 871

vb轻松获取计算机名,用户名 域名

vb轻松获取计算机名,用户名 域名 传参数注意大小写就可以了!

从mimikatz学习Windows安全之访问控制模型(二)

上次的文章分析了mimikatz的token模块,并简单介绍了windows访问控制模型的概念。在本篇文章中,主要介绍sid相关的概念,并介绍mimikatz的sid模块,着重分析sid::patch功能的原理在Windows操作系统中,系统使用安全标识符来唯一标识系统中执行各种动作的实体,每个用户有SID,计算机、用户服务同样也有SID,并且这些SID互不相同,这样才能保证所标识实体的唯一性SID一般由以下组成:“S”表示SID,SID始终以S开头**“1”**表示版本,该值始终为1。

dzqxwzoe的博客 317

system权限创建用户权限进程

windows编程的人都知道,在其操作系统下,进程被创建,通常被赋予很多属性,其中一项属性就是用户名,及进程所属的权限。打开任务管理器,可查看到(查看不到,点击查看,选择列即可)通常桌面系统explorer的权限是User权限,即用户权限的,它可以是你administrator,可以是你PC的名字,可以是Guest等,所以我们开启并运行的所有进程都继承它的权限。 若想运行具备system权限的ex

黄黄臭臭的便便到铜钱 7303

地基代码——获取本地线程用户

闻臻 361

计算机中DW用户名域名,如何获取线程关联用户名域名

如何获取线程关联用户名域名作者/在WindowsNT/2000/XP上编写程序时,有时会需要我们获取与当前调用线程关联用户名域名(domain),本文下面将示范在WindowsNT/2000/XP环境里如何使用Win32 API有关安全的函数来获取用户名域名。在Windows NT之前,一般都假设某个线程是运行在登录用户的帐号之下。但WindowsNT问世以后,允许线程可以在多个安全上下文...

weixin_28863779的博客 331

restful 根据用户名获取用户

Windows NT问世以后,允许线程可以在多个安全上下文中运行,言下之意就是一个线程对多个用户。但是很不幸,我碰到这样一个百思不得其解的问题:在控制台程序中调用LookupAccountSid函数,总是得到一个失败的返回,GetLastError() 函数指示的出错代码是14,也就是"存储器不足,无法完成此操作。在 Windows NT Windows 2000 系统中,此函数首先检查调用线程是否具备专门的存取令牌,如果得到令牌,则返回与调用线程关联用户名,否则,返回与调用进程关联用户名

APItesterCris的博客 541

Tomcat虚拟主机域名的设置

1.设置本地主机域名 Hosts是一个没有扩展名的系统文件,可以用记事本等工具打开,其作用就是将一些常用的网址域名与其对应的IP地址建立一个关联“数据库”,当用户在浏览器中输入一个需要登录的网址时,系统会首先自动从Hosts文件中寻找对应的IP地址,一旦找到,系统会立即打开对应网页,如果没有找到,则系统再会将网址提交DNS域名解析服务器进行IP地址的解析。 通过修改本地主机...

Auto.Labs 258

网络资产侦查神器!一款可快速侦察与目标关联的互联网资产系统推荐

资产侦察灯塔系统是一款能迅速快速侦察与目标关联的互联网资产,构建起完善的基础资产信息库。它能有效帮助甲方的安全团队或渗透测试人员高效地进行资产侦察与检索,及时发现潜在的薄弱环节攻击面,保障自身的资产安全。1000+优质开源项目更新进度:146/1000。如需更多类型优质项目推荐,请在文章后留言。

1551

Asp.Net获取电脑名,IP地址及当前用户名,操作系统,浏览器,.NET版本等信息的方法

Asp.Net获取电脑名,IP地址及当前用户名,操作系统,浏览器,.NET版本等信息的方法

关于Tomcat虚拟主机域名的设置

1.设置本地主机域名    Hosts是一个没有扩展名的系统文件,可以用记事本等工具打开,其作用就是将一些常用的网址域名与其对应的IP地址建立一个关联“数据库”,当用户在浏览器中输入一个需要登录的网址时,系统会首先自动从Hosts文件中寻找对应的IP地址,一旦找到,系统会立即打开对应

Newweapon's Trace 1000

性能测试-第03天-掌握Jmeter断言关联使用、自动录制脚本

更多功能测试以及全套学习路线图均在专栏,↑↑戳进去领取~ 系列文章目录 🍑软件测试功能到自动化学习路线图,2022年最新版技术栈 🍑软件测试01:从了解测试岗位职能测试流程开始,附作业 🍑… 🍑软件测试实战项目web资讯管理平台—黑马头条测试 😊身为开发必知必会的Linux:Linux远程连接/命令的使用 😊Linux命令大全,唯一以案例详解文,持续更新中 😊Linux命令大全以及数据库,唯一以案例详解文,已完结 👼 Web自动化测试01:认识web自动化在什么项目中适用 👼Web自动化测试02:Web

黑马程序员官方博客 567

Jmeter参数化、断言及接口关联(二)

JMeter cookie管理、JMeter参数化、用户定义变量、用户参数、CSV数据文件设置、函数(_counter)、Jmeter断言、响应断言、JSON断言、XPATH断言、JSON断言持续时间、Jmeter关联、正则表达式提取器、XPath提取器、JSON提取器及接口关联、跨线程组传参、JMeter录制脚本

xiatian22的博客 1754

Tomcat虚拟主机域名设置

<br />1.设置本地主机域名<br />     Hosts是一个没有扩展名的系统文件,可以用记事本等工具打开,其作用就是将一些常用的网址域名与其对应的IP地址建立一个关联“数据库”,当用户在浏览器中输入一个需要登录的网址时,系统会首先自动从Hosts文件中寻找对应的IP地址,一旦找到,系统会立即打开对应网页,如果没有找到,则系统再会将网址提交DNS域名解析服务器进行IP地址的解析。<br />     通过修改本地主机上的一个hosts文件,可以进行对ip地址与本地域名的映射,从而解决在本地调试JSP

eebbk110的专栏 638
上一篇: 剖析Windows任务管理器开发原理与实现
下一篇: VC 中进程与多进程管理的方法
zy122
博客等级 码龄21年 8粉丝 4原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值