LOGO OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 开发文档 其他文档  
 
网站管理员

【C#】查询Windows服务器远程桌面RDP协议登录事件,获取并导出当前服务器用户登录记录

admin
2025年2月14日 15:32 本文热度 414

【C#】查询Windows服务器远程桌面RDP协议登录事件,获取并导出当前服务器用户登录记录

参考:https://github.com/uknowsec/SharpEventLog

简介:读取登录过本机的登录失败或登录成功的所有计算机信息,在内网渗透中快速定位运维管理人员。

输出:登录时间、源IP地址、域名、用户名、是否成功

原理:通过Win API 获取windows事件安全日志中ID为4624、4625的事件,提取事件中的关键信息。

源码参考:

using System;

using System.Collections.Generic;

using System.Diagnostics;

using System.Linq;

using System.Text;


namespace SharpEventLog

{

    class Program

    {

        static void Main(string[] args)

        {

            System.Console.WriteLine("");

            System.Console.WriteLine("Author: Uknow");

            System.Console.WriteLine("Github: https://github.com/uknowsec/SharpEventLog");

            System.Console.WriteLine("");

            if (args.Length == 0)

            {

                System.Console.WriteLine("Usage: SharpEventLog.exe -4624");

                System.Console.WriteLine("       SharpEventLog.exe -4625");

            }

            if (args.Length == 1 && (args[0] == "-4624"))

            {

                EventLog_4624();

            }

            if (args.Length == 1 && (args[0] == "-4625"))

            {

                EventLog_4625();

            }

        }


        public static void EventLog_4624()

        {

            EventLog log = new EventLog("Security");

            Console.WriteLine("\r\n========== SharpEventLog -> 4624 ==========\r\n");

            var entries = log.Entries.Cast<EventLogEntry>().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("Status: True");

                    Console.WriteLine("Username: " + username.Replace("\n", "").Replace(" ", "").Replace("\t", "").Replace("\r", ""));

                    Console.WriteLine("Remote ip: " + ipaddress.Replace("\n", "").Replace(" ", "").Replace("\t", "").Replace("\r", ""));

                }

            }

        }


        public static void EventLog_4625()

        {

            EventLog log = new EventLog("Security");

            Console.WriteLine("\r\n========== SharpEventLog -> 4625 ==========\r\n");

            var entries = log.Entries.Cast<EventLogEntry>().Where(x => x.InstanceId == 4625);

            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("Status: Flase");

                    Console.WriteLine("Username: " + username.Replace("\n", "").Replace(" ", "").Replace("\t", "").Replace("\r", ""));

                    Console.WriteLine("Remote ip: " + ipaddress.Replace("\n", "").Replace(" ", "").Replace("\t", "").Replace("\r", ""));

                }

            }

        }


        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;

        }

    }

}

使用说明

打开cmd.exe

> SharpEventLog.exe

Author: Uknow

Github: https://github.com/uknowsec/SharpEventLog

Usage: SharpEventLog.exe -4624

       SharpEventLog.exe -4625


该文章在 2025/2/14 15:36:03 编辑过
关键字查询
相关文章
正在查询...
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2025 ClickSun All Rights Reserved