[域] 批量Net-User

域内批量执行net user Uname /domain

0x00使用场景

在渗透测试中,需要查找域内某用户的机器所在,必须得确定目标人物所对应的域用户。
查找域用户对应的Full Name信息,从而确认目标任务对应的域用户。

0x01 代码

代码其实很简单,使用C#进行编写,可自行编译。

将所有域用户导入user.txt中(每个域用户一行),遍历文件中的用户,然后调用系统cmd命令执行net user Uname /domain,将运行结果进行输出,可根据自己需求进行二次修改(线程、正则、输出保存)。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
using System;
using System.IO;
using System.Text;
using System.Text.RegularExpressions;
namespace domain
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Tools By RcoIl \r");
string currentDirectory = Environment.CurrentDirectory;
string text = currentDirectory + "\\user.txt"; // 文件绝对路径
if (!File.Exists(text))
{
Console.WriteLine("File not found " + text);
}
else
{
FileStream stream = new FileStream(text, FileMode.Open, FileAccess.Read); // 打开文本
try
{
StreamReader streamReader = new StreamReader(stream, Encoding.Default); // 实例化
try
{
while (!streamReader.EndOfStream) // 读取文本
{
string text2;
if ((text2 = streamReader.ReadLine()) != null && text2.Length != 0)
{
string id = text2;
Program.Check(id);
}
}
}
finally
{
if (streamReader != null)
{
((IDisposable)streamReader).Dispose();
}
}
}
finally
{
if (stream != null)
{
((IDisposable)stream).Dispose();
}
}
Console.WriteLine("============================================================");
Console.WriteLine("Finish!");
GC.Collect();
}
}
public static void Check(string id)
{
System.Diagnostics.ProcessStartInfo proccessStartInfo = new System.Diagnostics.ProcessStartInfo("net", "user " + id + " /domain");
proccessStartInfo.CreateNoWindow = true;
System.Diagnostics.Process proc = new System.Diagnostics.Process { StartInfo = proccessStartInfo };
proc.StartInfo.RedirectStandardOutput = true; // 由调用程序获取输出信息
proc.StartInfo.UseShellExecute = false; // 是否使用操作系统shell启动
proc.StartInfo.CreateNoWindow = true; // 不显示程序窗口
proc.Start(); // 启动程序
string outlist = proc.StandardOutput.ReadToEnd(); // 获取cmd窗口的输出信息
Regex reg = new Regex(".*ame.*");
MatchCollection result = reg.Matches(outlist);
Console.WriteLine("============================================================");
foreach (Match match in result)
{
Console.WriteLine(match);
}
proc.WaitForExit(); // 等待程序执行完退出进程
proc.Close();
}
}
}

运行效果图:

0x02 总结

在域内使用dsquery查找的信息是有限的,所以需要相应的辅助工具,这个工具存在的意义就是人物与域用户之间的确认。

!坚持技术分享,您的支持将鼓励我继续创作!