蓝队技术 | 使用Sysmon日志识别和分析Windows恶意活动

在这篇文章中,我们将演示如何使用Sysmon日志来分析和了解恶意软件的各种行为,其中包括如何通过Firefox从Dropbox下载、运行、并使用Windows工具进行安装。本文将介绍Sysmon日志中各种有用的Event ID,以及如何识别和分析Windows操作系统上的恶意活动。
蓝队技术 | 使用Sysmon日志识别和分析Windows恶意活动

要解决的问题

在开始本文的内容之前,我们需要先在脑海里记住以下几个问题,并带着这些问题来阅读本文:

希望大家阅读完本文之后,能够解决上述的这八个问题。

Sysmon

背景

Sysmon日志是由Microsoft系统监视器(Sysmon)生成的事件日志,它们提供有关Windows上的系统级操作的详细信息,并记录进程启动、网络连接、文件和注册表修改、驱动程序和服务活动以及WMI操作等活动,通过分析Sysmon日志,安全专家可以检测潜在风险、发现异常并响应安全事件,以增强整体系统监控和安全性。在不断变化的网络安全环境中,提前防范威胁非常重要。

Sysmon日志在这项工作中发挥着至关重要的作用,它提供了有价值的见解,并使组织能够加强其安全态势。Windows是企业环境中的主要操作系统,全面了解Windows事件日志、其独特特征和局限性以及通过Sysmon进行增强的潜力至关重要。

Event ID

Sysmon日志中所使用的全部Event ID都已经在微软的Sysmon页面上进行了介绍,其中包括:

工具

本文所进行的安全分析都将在一台Windows VM虚拟机中执行,并配置好Linux Bash Shell的Windows子系统。由于分析过程中会遇到大量的JSON数据,因此本文选择使用jq工具,该工具可以使用choco包管理器安装,安装命令如下:

代码语言:javascript代码运行次数:0运行复制

choco install jq

数据

概览

下载的zip压缩文件中只有一个文件:

代码语言:javascript代码运行次数:0运行复制

oxdf@hacky$ unzip -l unit42.zipArchive:  unit42.zipLength      Date    Time    Name---------  ---------- -----   ----1118208  2024-02-14 08:43   Microsoft-Windows-Sysmon-Operational.evtx---------                     -------1118208                     1 file

这些就是来源于目标系统的Sysmon日志,解压之后,我们会看到一个大小为1.1MB的Windows事件日志:

代码语言:javascript代码运行次数:0运行复制

oxdf@hacky$ file Microsoft-Windows-Sysmon-Operational.evtxMicrosoft-Windows-Sysmon-Operational.evtx: MS Windows Vista Event Log, 3 chunks (no. 2 in use), next record no. 170oxdf@hacky$ ls -lh Microsoft-Windows-Sysmon-Operational.evtx-rwxrwx--- 1 root vboxsf 1.1M Feb 13 22:43 Microsoft-Windows-Sysmon-Operational.evtx

进程日志

笔者认为,用于将Windows事件日志格式转换为JSON的最佳处理工具就是Eric Zimmerman开发的EvtxeCmd.exe。接下来运行该工具,并将日志文件提供给EvtxeCmd.exe,并使用–json [file]参数运行:

代码语言:javascript代码运行次数:0运行复制

PS > EvtxECmd.exe -f .Microsoft-Windows-Sysmon-Operational.evtx --json .EvtxECmd version 1.5.0.0Author: Eric Zimmerman (saericzimmerman@gmail.com)Command line: -f .Microsoft-Windows-Sysmon-Operational.evtx --json .json output will be saved to .�40408132435_EvtxECmd_Output.jsonMaps loaded: 438Processing Microsoft-Windows-Sysmon-Operational.evtx...Chunk count: 3, Iterating records...Record # 4 (Event Record Id: 118750): In map for event 26, Property /Event/EventData/Data[@Name="Archived"] not found! Replacing with empty stringRecord # 27 (Event Record Id: 118773): In map for event 10, Property /Event/EventData/Data[@Name="SourceProcessGuid"] not found! Replacing with empty stringRecord # 27 (Event Record Id: 118773): In map for event 10, Property /Event/EventData/Data[@Name="TargetProcessGuid"] not found! Replacing with empty stringRecord # 46 (Event Record Id: 118792): In map for event 26, Property /Event/EventData/Data[@Name="Archived"] not found! Replacing with empty stringEvent log detailsFlags: NoneChunk count: 3Stored/Calculated CRC: 9B75E006/9B75E006Earliest timestamp: 2024-02-14 03:41:26.4441194Latest timestamp:   2024-02-14 03:43:26.8870662Total event log records found: 169Records included: 169 Errors: 0 Events dropped: 0Metrics (including dropped events)Event ID        Count1               62               163               15               17               1510              111              5612              1413              1915              217              722              323              2626              2Processed 1 file in 0.6669 secondsFLARE-VM 04/08/2024 09:24:35

在输出数据的底部,给出了识别到的日志类型,其中有56条日志与Event ID 11有关。

数据格式

生成的JSON数据是一系列日志记录,JSON中的每一行代表一条日志记录:

代码语言:javascript代码运行次数:0运行复制

PS > cat .�40408132435_EvtxECmd_Output.json | select -first 1{"PayloadData1":"ProcessID: 4292, ProcessGUID: 817bddf3-3514-65cc-0802-000000001900","PayloadData2":"RuleName: -","PayloadData3":"Image: C:Program FilesMozilla Firefoxfirefox.exe","PayloadData4":"QueryName: uc2f030016253ec53f4953980a4e.dl.dropboxusercontent.com","PayloadData5":"QueryStatus: 0","PayloadData6":"QueryResults: type:  5 edge-block-www-env.dropbox-dns.com;::ffff:162.125.81.15;198.51.44.6;2620:4d:4000:6259:7:6:0:1;198.51.45.6;2a00:edc0:6259:7:6::2;198.51.44.70;2620:4d:4000:6259:7:6:0:3;198.51.45.70;2a00:edc0:6259:7:6::4;","UserName":"DESKTOP-887GK2LCyberJunkie","MapDescription":"DNSEvent (DNS query)","ChunkNumber":0,"Computer":"DESKTOP-887GK2L","Payload":"{"EventData":{"Data":[{"@Name":"RuleName","#text":"-"},{"@Name":"UtcTime","#text":"2024-02-14 03:41:25.269"},{"@Name":"ProcessGuid","#text":"817bddf3-3514-65cc-0802-000000001900"},{"@Name":"ProcessId","#text":"4292"},{"@Name":"QueryName","#text":"uc2f030016253ec53f4953980a4e.dl.dropboxusercontent.com"},{"@Name":"QueryStatus","#text":"0"},{"@Name":"QueryResults","#text":"type:  5 edge-block-www-env.dropbox-dns.com;::ffff:162.125.81.15;198.51.44.6;2620:4d:4000:6259:7:6:0:1;198.51.45.6;2a00:edc0:6259:7:6::2;198.51.44.70;2620:4d:4000:6259:7:6:0:3;198.51.45.70;2a00:edc0:6259:7:6::4;"},{"@Name":"Image","#text":"C:\Program Files\Mozilla Firefox\firefox.exe"},{"@Name":"User","#text":"DESKTOP-887GK2L\CyberJunkie"}]}}","UserId":"S-1-5-18","Channel":"Microsoft-Windows-Sysmon/Operational","Provider":"Microsoft-Windows-Sysmon","EventId":22,"EventRecordId":"118747","ProcessId":3028,"ThreadId":4452,"Level":"Info","Keywords":"Classic","SourceFile":"Z:hackthebox-sherlocksunit42Microsoft-Windows-Sysmon-Operational.evtx","ExtraDataOffset":0,"HiddenRecord":false,"TimeCreated":"2024-02-14T03:41:26.4441194+00:00","RecordNumber":1}我们还可以使用jq对结果JSON数据进行处理,并获取到记录进程的Event ID统计信息:

代码语言:javascript代码运行次数:0运行复制

PS  > cat .�40408132435_EvtxECmd_Output.json | jq -sc 'group_by(.EventId) | map({EventId: .[0].EventId, count: length}) |.[]'{"EventId":1,"count":6}{"EventId":2,"count":16}{"EventId":3,"count":1}{"EventId":5,"count":1}{"EventId":7,"count":15}{"EventId":10,"count":1}{"EventId":11,"count":56}{"EventId":12,"count":14}{"EventId":13,"count":19}{"EventId":15,"count":2}{"EventId":17,"count":7}{"EventId":22,"count":3}{"EventId":23,"count":26}{"EventId":26,"count":2}

代码语言:javascript代码运行次数:0运行复制

进程

了解数据

首先,我们要先查看进程事件,以了解目标设备上正在运行哪些程序,然后将这些事件信息保存到一个文件中(过滤出Event ID为1的事件并保存):

代码语言:javascript代码运行次数:0运行复制

PS > cat .�40408132435_EvtxECmd_Output.json | jq -c 'select(.EventId == 1)' > eventid1.json现在,我们就可以查看保存好的日志文件并了解日志中的字段信息了:

代码语言:javascript代码运行次数:0运行复制

PS  > cat .eventid1.json | jq -s '.[0]'{"PayloadData1": "ProcessID: 5584, ProcessGUID: 817bddf3-3679-65cc-2902-000000001900","PayloadData2": "RuleName: technique_id=T1027,technique_name=Obfuscated Files or Information","PayloadData3": "SHA1=282F855BEB4FACF0726E13ECCADB7D3411B30B85,MD5=A1F5FF25E3D0F160BC7CE7CA57349D83,SHA256=B412C45DE423534D85F121ABC348FB38020FDA804EA0A972708B7447B0E7325D,IMPHASH=F84029681F81FED23E3E067364DA1699","PayloadData4": "ParentProcess: C:Program FilesMozilla Firefoxfirefox.exe","PayloadData5": "ParentProcessID: 4292, ParentProcessGUID: 817bddf3-3514-65cc-0802-000000001900","PayloadData6": "ParentCommandLine: "C:Program FilesMozilla Firefoxfirefox.exe"","UserName": "DESKTOP-887GK2LCyberJunkie","ExecutableInfo": ""C:Program FilesMozilla Firefoxpingsender.exe" https://incoming.telemetry.mozilla.org/submit/telemetry/cb88145b-129d-471c-b605-4fdf09fec680/event/Firefox/122.0.1/release/20240205133611?v=4 C:UsersCyberJunkieAppDataRoamingMozillaFirefoxProfilesavsa4d81.default-releasesaved-telemetry-pingscb88145b-129d-471c-b605-4fdf09fec680 https://incoming.telemetry.mozilla.org/submit/telemetry/6fcd92a2-cc60-4df6-b6fb-66356dd011c1/main/Firefox/122.0.1/release/20240205133611?v=4 C:UsersCyberJunkieAppDataRoamingMozillaFirefoxProfilesavsa4d81.default-releasesaved-telemetry-pings6fcd92a2-cc60-4df6-b6fb-66356dd011c1","MapDescription": "Process creation","ChunkNumber": 0,"Computer": "DESKTOP-887GK2L","Payload": "{"EventData":{"Data":[{"@Name":"RuleName","#text":"technique_id=T1027,technique_name=Obfuscated Files or Information"},{"@Name":"UtcTime","#text":"2024-02-14 03:41:45.304"},{"@Name":"ProcessGuid","#text":"817bddf3-3679-65cc-2902-000000001900"},{"@Name":"ProcessId","#text":"5584"},{"@Name":"Image","#text":"C:\Program Files\Mozilla Firefox\pingsender.exe"},{"@Name":"FileVersion","#text":"122.0.1"},{"@Name":"Description","#text":"-"},{"@Name":"Product","#text":"Firefox"},{"@Name":"Company","#text":"Mozilla Foundation"},{"@Name":"OriginalFileName","#text":"pingsender.exe"},{"@Name":"CommandLine","#text":""C:\Program Files\Mozilla Firefox\pingsender.exe" https://incoming.telemetry.mozilla.org/submit/telemetry/cb88145b-129d-471c-b605-4fdf09fec680/event/Firefox/122.0.1/release/20240205133611?v=4 C:\Users\CyberJunkie\AppData\Roaming\Mozilla\Firefox\Profiles\avsa4d81.default-release\saved-telemetry-pings\cb88145b-129d-471c-b605-4fdf09fec680 https://incoming.telemetry.mozilla.org/submit/telemetry/6fcd92a2-cc60-4df6-b6fb-66356dd011c1/main/Firefox/122.0.1/release/20240205133611?v=4 C:\Users\CyberJunkie\AppData\Roaming\Mozilla\Firefox\Profiles\avsa4d81.default-release\saved-telemetry-pings\6fcd92a2-cc60-4df6-b6fb-66356dd011c1"},{"@Name":"CurrentDirectory","#text":"C:\Program Files\Mozilla Firefox\"},{"@Name":"User","#text":"DESKTOP-887GK2L\CyberJunkie"},{"@Name":"LogonGuid","#text":"817bddf3-311e-65cc-a7ae-1b0000000000"},{"@Name":"LogonId","#text":"0x1BAEA7"},{"@Name":"TerminalSessionId","#text":"1"},{"@Name":"IntegrityLevel","#text":"Medium"},{"@Name":"Hashes","#text":"SHA1=282F855BEB4FACF0726E13ECCADB7D3411B30B85,MD5=A1F5FF25E3D0F160BC7CE7CA57349D83,SHA256=B412C45DE423534D85F121ABC348FB38020FDA804EA0A972708B7447B0E7325D,IMPHASH=F84029681F81FED23E3E067364DA1699"},{"@Name":"ParentProcessGuid","#text":"817bddf3-3514-65cc-0802-000000001900"},{"@Name":"ParentProcessId","#text":"4292"},{"@Name":"ParentImage","#text":"C:\Program Files\Mozilla Firefox\firefox.exe"},{"@Name":"ParentCommandLine","#text":""C:\Program Files\Mozilla Firefox\firefox.exe""},{"@Name":"ParentUser","#text":"DESKTOP-887GK2L\CyberJunkie"}]}}","UserId": "S-1-5-18","Channel": "Microsoft-Windows-Sysmon/Operational","Provider": "Microsoft-Windows-Sysmon","EventId": 1,"EventRecordId": "118772","ProcessId": 3028,"ThreadId": 4412,"Level": "Info","Keywords": "Classic","SourceFile": "Z:hackthebox-sherlocksunit42Microsoft-Windows-Sysmon-Operational.evtx","ExtraDataOffset": 0,"HiddenRecord": false,"TimeCreated": "2024-02-14T03:41:45.3058822+00:00","RecordNumber": 26}

概览

我们先分析父进程PayloadData4、进程ExecutableInfo、ID为PayloadData1和PayloadData5的进程和时间戳:

代码语言:javascript代码运行次数:0运行复制

PS > cat .eventid1.json | jq -s '.[] | [.TimeCreated, .PayloadData4, .ExecutableInfo, .PayloadData1, .PayloadData5]'["2024-02-14T03:41:45.3058822+00:00","ParentProcess: C:Program FilesMozilla Firefoxfirefox.exe",""C:Program FilesMozilla Firefoxpingsender.exe" https://incoming.telemetry.mozilla.org/submit/telemetry/cb88145b-129d-471c-b605-4fdf09fec680/event/Firefox/122.0.1/release/20240205133611?v=4 C:UsersCyberJunkieAppDataRoamingMozillaFirefoxProfilesavsa4d81.default-releasesaved-telemetry-pingscb88145b-129d-471c-b605-4fdf09fec680 https://incoming.telemetry.mozilla.org/submit/telemetry/6fcd92a2-cc60-4df6-b6fb-66356dd011c1/main/Firefox/122.0.1/release/20240205133611?v=4 C:UsersCyberJunkieAppDataRoamingMozillaFirefoxProfilesavsa4d81.default-releasesaved-telemetry-pings6fcd92a2-cc60-4df6-b6fb-66356dd011c1","ProcessID: 5584, ProcessGUID: 817bddf3-3679-65cc-2902-000000001900","ParentProcessID: 4292, ParentProcessGUID: 817bddf3-3514-65cc-0802-000000001900"]["2024-02-14T03:41:56.5596188+00:00","ParentProcess: C:Windowsexplorer.exe",""C:UsersCyberJunkieDownloadsPreventivo24.02.14.exe.exe" ","ProcessID: 10672, ProcessGUID: 817bddf3-3684-65cc-2d02-000000001900","ParentProcessID: 1116, ParentProcessGUID: 817bddf3-311f-65cc-0a01-000000001900"]["2024-02-14T03:41:57.6052379+00:00","ParentProcess: C:WindowsSystem32services.exe","C:Windowssystem32msiexec.exe /V","ProcessID: 10220, ProcessGUID: 817bddf3-3685-65cc-2e02-000000001900","ParentProcessID: 740, ParentProcessGUID: 817bddf3-307b-65cc-0b00-000000001900"]["2024-02-14T03:41:57.7881524+00:00","ParentProcess: C:WindowsSystem32msiexec.exe","C:Windowssyswow64MsiExec.exe -Embedding 5364C761FA9A55D636271A1CE8A6742D C","ProcessID: 6996, ProcessGUID: 817bddf3-3685-65cc-2f02-000000001900","ParentProcessID: 10220, ParentProcessGUID: 817bddf3-3685-65cc-2e02-000000001900"]["2024-02-14T03:41:57.9059712+00:00","ParentProcess: C:UsersCyberJunkieDownloadsPreventivo24.02.14.exe.exe",""C:Windowssystem32msiexec.exe" /i "C:UsersCyberJunkieAppDataRoamingPhoto and Fax VnPhoto and vn 1.1.2installF97891Cmain1.msi" AI_SETUPEXEPATH=C:UsersCyberJunkieDownloadsPreventivo24.02.14.exe.exe SETUPEXEDIR=C:UsersCyberJunkieDownloads EXE_CMD_LINE="/exenoupdates  /forcecleanup  /wintime 1707880560  " AI_EUIMSI=""","ProcessID: 10324, ProcessGUID: 817bddf3-3685-65cc-3002-000000001900","ParentProcessID: 10672, ParentProcessGUID: 817bddf3-3684-65cc-2d02-000000001900"]["2024-02-14T03:41:58.1794583+00:00","ParentProcess: C:WindowsSystem32msiexec.exe","C:Windowssyswow64MsiExec.exe -Embedding 5250A3DB12224F77D2A18B4EB99AC5EB","ProcessID: 10280, ProcessGUID: 817bddf3-3686-65cc-3102-000000001900","ParentProcessID: 10220, ParentProcessGUID: 817bddf3-3685-65cc-2e02-000000001900"]

从中我们可以了解到下列内容:

很明显,2和5是相关的,然后3、4、6是相关的。

Preventivo24.02.14.exe.exe

在搜索引擎中搜索「Preventivo24.02.14.exe.exe」、「Preventivo24.02.14」和「Preventivo.exe」之后,我了解到了一些看似可疑的东西:

蓝队技术 | 使用Sysmon日志识别和分析Windows恶意活动

日志中还提供了源代码的哈希:

代码语言:javascript代码运行次数:0运行复制

PS  > cat .eventid1.json | jq -s '.[1]'{"PayloadData1": "ProcessID: 10672, ProcessGUID: 817bddf3-3684-65cc-2d02-000000001900","PayloadData2": "RuleName: technique_id=T1204,technique_name=User Execution","PayloadData3": "SHA1=18A24AA0AC052D31FC5B56F5C0187041174FFC61,MD5=32F35B78A3DC5949CE3C99F2981DEF6B,SHA256=0CB44C4F8273750FA40497FCA81E850F73927E70B13C8F80CDCFEE9D1478E6F3,IMPHASH=36ACA8EDDDB161C588FCF5AFDC1AD9FA","PayloadData4": "ParentProcess: C:Windowsexplorer.exe","PayloadData5": "ParentProcessID: 1116, ParentProcessGUID: 817bddf3-311f-65cc-0a01-000000001900","PayloadData6": "ParentCommandLine: C:WindowsExplorer.EXE","UserName": "DESKTOP-887GK2LCyberJunkie","ExecutableInfo": ""C:UsersCyberJunkieDownloadsPreventivo24.02.14.exe.exe" ","MapDescription": "Process creation","ChunkNumber": 0,"Computer": "DESKTOP-887GK2L","Payload": "{"EventData":{"Data":[{"@Name":"RuleName","#text":"technique_id=T1204,technique_name=User Execution"},{"@Name":"UtcTime","#text":"2024-02-14 03:41:56.538"},{"@Name":"ProcessGuid","#text":"817bddf3-3684-65cc-2d02-000000001900"},{"@Name":"ProcessId","#text":"10672"},{"@Name":"Image","#text":"C:\Users\CyberJunkie\Downloads\Preventivo24.02.14.exe.exe"},{"@Name":"FileVersion","#text":"1.1.2"},{"@Name":"Description","#text":"Photo and vn Installer"},{"@Name":"Product","#text":"Photo and vn"},{"@Name":"Company","#text":"Photo and Fax Vn"},{"@Name":"OriginalFileName","#text":"Fattura 2 2024.exe"},{"@Name":"CommandLine","#text":""C:\Users\CyberJunkie\Downloads\Preventivo24.02.14.exe.exe" "},{"@Name":"CurrentDirectory","#text":"C:\Users\CyberJunkie\Downloads\"},{"@Name":"User","#text":"DESKTOP-887GK2L\CyberJunkie"},{"@Name":"LogonGuid","#text":"817bddf3-311e-65cc-a7ae-1b0000000000"},{"@Name":"LogonId","#text":"0x1BAEA7"},{"@Name":"TerminalSessionId","#text":"1"},{"@Name":"IntegrityLevel","#text":"Medium"},{"@Name":"Hashes","#text":"SHA1=18A24AA0AC052D31FC5B56F5C0187041174FFC61,MD5=32F35B78A3DC5949CE3C99F2981DEF6B,SHA256=0CB44C4F8273750FA40497FCA81E850F73927E70B13C8F80CDCFEE9D1478E6F3,IMPHASH=36ACA8EDDDB161C588FCF5AFDC1AD9FA"},{"@Name":"ParentProcessGuid","#text":"817bddf3-311f-65cc-0a01-000000001900"},{"@Name":"ParentProcessId","#text":"1116"},{"@Name":"ParentImage","#text":"C:\Windows\explorer.exe"},{"@Name":"ParentCommandLine","#text":"C:\Windows\Explorer.EXE"},{"@Name":"ParentUser","#text":"DESKTOP-887GK2L\CyberJunkie"}]}}","UserId": "S-1-5-18","Channel": "Microsoft-Windows-Sysmon/Operational","Provider": "Microsoft-Windows-Sysmon","EventId": 1,"EventRecordId": "118793","ProcessId": 3028,"ThreadId": 4412,"Level": "Info","Keywords": "Classic","SourceFile": "Z:hackthebox-sherlocksunit42Microsoft-Windows-Sysmon-Operational.evtx","ExtraDataOffset": 0,"HiddenRecord": false,"TimeCreated": "2024-02-14T03:41:56.5596188+00:00","RecordNumber": 47}

搜索这些哈希之后,我们发现目标代码已经被上传到了很多恶意软件沙箱,例如Malware Bazaar、AnyRun、JoeSandbox和VirusTotal,这些平台都已经将其标记为了恶意代码:

蓝心千询 蓝心千询

蓝心千询是vivo推出的一个多功能AI智能助手

蓝心千询 34 查看详情 蓝心千询

蓝队技术 | 使用Sysmon日志识别和分析Windows恶意活动

从事件日志中还可以看到,恶意代码的完整路径为「C:UsersCyberJunkieDownloadsPreventivo24.02.14.exe.exe」,进程的PID为10672。

恶意软件源

文件创建

如果在恶意软件被下载的时候,Sysmon已经在运行了,那么它就会生成事件ID为11的事件。我们可以使用「jq -c」来选择这些事件,并按行输出。此时,还可以使用findstr(类似于Linux中的grep)来获取包含4292的日志条目,而4292则是之前进程分析中Firefox的进程ID。然后,读取结果数据并打印文件时间戳:

代码语言:javascript代码运行次数:0运行复制

PS > cat .�40408132435_EvtxECmd_Output.json | jq -c 'select(.EventId == 11)' | findstr 4292 | jq -s '.[] | [.TimeCreated, .PayloadData4]'["2024-02-14T03:41:26.4630328+00:00","TargetFilename: C:UsersCYBERJ~1AppDataLocalTempskZdsnwf.exe"]["2024-02-14T03:41:26.4635006+00:00","TargetFilename: C:UsersCyberJunkieDownloadsskZdsnwf.exe.part"]["2024-02-14T03:41:26.4639993+00:00","TargetFilename: C:UsersCyberJunkieDownloadsskZdsnwf.exe.part"]["2024-02-14T03:41:26.4644853+00:00","TargetFilename: C:UsersCyberJunkieDownloadsPreventivo24.02.14.exe.exe"]["2024-02-14T03:41:30.4745302+00:00","TargetFilename: C:UsersCyberJunkieDownloadsPreventivo24.02.14.exe.exe:Zone.Identifier"]["2024-02-14T03:41:45.2125243+00:00","TargetFilename: C:UsersCyberJunkieAppDataRoamingMozillaFirefoxProfilesavsa4d81.default-releaseprefs-1.js"]["2024-02-14T03:41:45.2136161+00:00","TargetFilename: C:UsersCyberJunkieAppDataRoamingMozillaFirefoxProfilesavsa4d81.default-releaseprefs-1.js"]

我们可以看到,03:41:26时它开始下载一个temp临时文件,之后便被重命名为了Preventivo24.02.14.exe.exe(同一秒)。4秒钟之后,另一个数据流将该文件标记为了「从互联网下载」,我们也可以说它是从Firefox下载的。此时,其他进程看起来就不是很重要了。

DNS

那么,Firefox到底是从哪里下载它的?于是我们打算从DNS记录入手,即Event ID 22,要使用的命令结构和之前类似:

代码语言:javascript代码运行次数:0运行复制

PS  > cat .�40408132435_EvtxECmd_Output.json | jq -c 'select(.EventId == 22)' | findstr 4292 | jq -s '.[] | [.TimeCreated, .PayloadData4, .PayloadData3]'["2024-02-14T03:41:26.4441194+00:00","QueryName: uc2f030016253ec53f4953980a4e.dl.dropboxusercontent.com","Image: C:Program FilesMozilla Firefoxfirefox.exe"]["2024-02-14T03:41:45.7793186+00:00","QueryName: d.dropbox.com","Image: C:Program FilesMozilla Firefoxfirefox.exe"]

在下载开始之后不到0.1秒便执行了第一次查询,可以判断恶意软件来自于Dropbox。

第二次查询发生在19秒之后,也就是恶意软件启动前的11秒,目前还搞不清楚此时发生了什么,但我们也先标记好。

恶意软件活动

文件创建

现在,我们从恶意进程(PID 10672)入手,通过日志分析,我们可以看到恶意软件在目标设备上创建了六个文件:

代码语言:javascript代码运行次数:0运行复制

PS  > cat .�40408132435_EvtxECmd_Output.json | jq -c 'select(.EventId == 11)' | findstr 10672 | jq -s '.[] | [.TimeCreated, .PayloadData4]'["2024-02-14T03:41:58.4048771+00:00","TargetFilename: C:UsersCyberJunkieAppDataRoamingPhoto and Fax VnPhoto and vn 1.1.2installF97891CWindowsVolumeGamesc.cmd"]["2024-02-14T03:41:58.4056902+00:00","TargetFilename: C:UsersCyberJunkieAppDataRoamingPhoto and Fax VnPhoto and vn 1.1.2installF97891CWindowsVolumeGamescmmc.cmd"]["2024-02-14T03:41:58.4065154+00:00","TargetFilename: C:UsersCyberJunkieAppDataRoamingPhoto and Fax VnPhoto and vn 1.1.2installF97891CWindowsVolumeGameson.cmd"]["2024-02-14T03:41:58.4075055+00:00","TargetFilename: C:UsersCyberJunkieAppDataRoamingPhoto and Fax VnPhoto and vn 1.1.2installF97891CWindowsVolumeGamesonce.cmd"]["2024-02-14T03:41:58.4104279+00:00","TargetFilename: C:UsersCyberJunkieAppDataRoamingPhoto and Fax VnPhoto and vn 1.1.2installF97891CWindowsVolumeGamestaskhost.exe"]["2024-02-14T03:41:58.4225212+00:00","TargetFilename: C:UsersCyberJunkieAppDataRoamingPhoto and Fax VnPhoto and vn 1.1.2installF97891CWindowsVolumeGamesviewer.exe"]

这些文件全部都在同一时间创建,可以看到once.cmd文件的完整路径为「C:UsersCyberJunkieAppDataRoamingPhoto and Fax VnPhoto and vn 1.1.2installF97891CWindowsVolumeGamesonce.cmd」。

DNS

这个进程发送的DNS请求如下:

代码语言:javascript代码运行次数:0运行复制

PS  > cat .�40408132435_EvtxECmd_Output.json | jq -c 'select(.EventId == 22)' | findstr 10672 | jq -s '.[] | [.TimeCreated, .PayloadData4, .PayloadData3]'["2024-02-14T03:41:58.7648370+00:00","QueryName: www.example.com","Image: C:UsersCyberJunkieDownloadsPreventivo24.02.14.exe.exe"]

请求的域名为www.example.com,这个域名很明显不是由威胁行为者控制的,而且也不是一个活动域名,也有可能是为了误导分析人员而设置的。

网络

日志中只有一个网络事件(Event ID 3),来自于进程PID 10672:

代码语言:javascript代码运行次数:0运行复制

PS  > cat .�40408132435_EvtxECmd_Output.json | jq -c 'select(.EventId == 3)' | findstr 10672 | jq .{"PayloadData1": "ProcessID: 10672, ProcessGUID: 817bddf3-3684-65cc-2d02-000000001900","PayloadData2": "RuleName: technique_id=T1036,technique_name=Masquerading","PayloadData3": "SourceHostname: -","PayloadData4": "SourceIp: 172.17.79.132","PayloadData5": "DestinationHostname: -","PayloadData6": "DestinationIp: 93.184.216.34","UserName": "DESKTOP-887GK2LCyberJunkie","MapDescription": "Network connection","ChunkNumber": 2,"Computer": "DESKTOP-887GK2L","Payload": "{"EventData":{"Data":[{"@Name":"RuleName","#text":"technique_id=T1036,technique_name=Masquerading"},{"@Name":"UtcTime","#text":"2024-02-14 03:41:57.159"},{"@Name":"ProcessGuid","#text":"817bddf3-3684-65cc-2d02-000000001900"},{"@Name":"ProcessId","#text":"10672"},{"@Name":"Image","#text":"C:\Users\CyberJunkie\Downloads\Preventivo24.02.14.exe.exe"},{"@Name":"User","#text":"DESKTOP-887GK2L\CyberJunkie"},{"@Name":"Protocol","#text":"tcp"},{"@Name":"Initiated","#text":"True"},{"@Name":"SourceIsIpv6","#text":"False"},{"@Name":"SourceIp","#text":"172.17.79.132"},{"@Name":"SourceHostname","#text":"-"},{"@Name":"SourcePort","#text":"61177"},{"@Name":"SourcePortName","#text":"-"},{"@Name":"DestinationIsIpv6","#text":"False"},{"@Name":"DestinationIp","#text":"93.184.216.34"},{"@Name":"DestinationHostname","#text":"-"},{"@Name":"DestinationPort","#text":"80"},{"@Name":"DestinationPortName","#text":"-"}]}}","UserId": "S-1-5-18","Channel": "Microsoft-Windows-Sysmon/Operational","Provider": "Microsoft-Windows-Sysmon","EventId": 3,"EventRecordId": "118910","ProcessId": 3028,"ThreadId": 4424,"Level": "Info","Keywords": "Classic","SourceFile": "Z:hackthebox-sherlocksunit42Microsoft-Windows-Sysmon-Operational.evtx","ExtraDataOffset": 0,"HiddenRecord": false,"TimeCreated": "2024-02-14T03:41:58.9054838+00:00","RecordNumber": 164}

连接到的IP地址为93.184.216.34。

时间戳

恶意软件修改文件时间戳的行为记录为Event ID2,总共有16个相关的恶意软件进程事件:

代码语言:javascript代码运行次数:0运行复制

PS  > cat .�40408132435_EvtxECmd_Output.json | jq -c 'select(.EventId == 2)' | findstr 10672 | jq -s '.[] | [.TimeCreated, .PayloadData4, .PayloadData5, .PayloadData6]'["2024-02-14T03:41:57.5590448+00:00","TargetFilename: C:UsersCyberJunkieAppDataRoamingPhoto and Fax VnPhoto and vn 1.1.2installF97891Cmain1.msi","CreationTimeUTC: 2024-01-14 08:14:23.713","PreviousCreationTimeUTC: 2024-02-14 03:41:57.545"]["2024-02-14T03:41:58.4045440+00:00","TargetFilename: C:UsersCyberJunkieAppDataRoamingPhoto and Fax VnPhoto and vn 1.1.2installF97891CWindowsVolumeGamespowercfg.msi","CreationTimeUTC: 2024-01-10 18:12:27.357","PreviousCreationTimeUTC: 2024-02-14 03:41:58.389"]["2024-02-14T03:41:58.4053804+00:00","TargetFilename: C:UsersCyberJunkieAppDataRoamingPhoto and Fax VnPhoto and vn 1.1.2installF97891CWindowsVolumeGamesc.cmd","CreationTimeUTC: 2024-01-10 18:12:26.295","PreviousCreationTimeUTC: 2024-02-14 03:41:58.389"]["2024-02-14T03:41:58.4061207+00:00","TargetFilename: C:UsersCyberJunkieAppDataRoamingPhoto and Fax VnPhoto and vn 1.1.2installF97891CWindowsVolumeGamescmmc.cmd","CreationTimeUTC: 2024-01-10 18:12:26.373","PreviousCreationTimeUTC: 2024-02-14 03:41:58.404"]["2024-02-14T03:41:58.4069465+00:00","TargetFilename: C:UsersCyberJunkieAppDataRoamingPhoto and Fax VnPhoto and vn 1.1.2installF97891CWindowsVolumeGameson.cmd","CreationTimeUTC: 2024-01-10 18:12:26.436","PreviousCreationTimeUTC: 2024-02-14 03:41:58.404"]["2024-02-14T03:41:58.4078369+00:00","TargetFilename: C:UsersCyberJunkieAppDataRoamingPhoto and Fax VnPhoto and vn 1.1.2installF97891CWindowsVolumeGamesonce.cmd","CreationTimeUTC: 2024-01-10 18:12:26.458","PreviousCreationTimeUTC: 2024-02-14 03:41:58.404"]["2024-02-14T03:41:58.4086077+00:00","TargetFilename: C:UsersCyberJunkieAppDataRoamingPhoto and Fax VnPhoto and vn 1.1.2installF97891CWindowsVolumeGamescmd.txt","CreationTimeUTC: 2024-01-10 18:12:26.326","PreviousCreationTimeUTC: 2024-02-14 03:41:58.404"]["2024-02-14T03:41:58.4093822+00:00","TargetFilename: C:UsersCyberJunkieAppDataRoamingPhoto and Fax VnPhoto and vn 1.1.2installF97891CWindowsVolumeGamesUltraVNC.ini","CreationTimeUTC: 2024-01-10 18:12:26.530","PreviousCreationTimeUTC: 2024-02-14 03:41:58.404"]["2024-02-14T03:41:58.4101450+00:00","TargetFilename: C:UsersCyberJunkieAppDataRoamingPhoto and Fax VnPhoto and vn 1.1.2installF97891CTempFolder~.pdf","CreationTimeUTC: 2024-01-14 08:10:06.029","PreviousCreationTimeUTC: 2024-02-14 03:41:58.404"]["2024-02-14T03:41:58.4128728+00:00","TargetFilename: C:UsersCyberJunkieAppDataRoamingPhoto and Fax VnPhoto and vn 1.1.2installF97891CWindowsVolumeGamestaskhost.exe","CreationTimeUTC: 2024-01-10 18:12:26.513","PreviousCreationTimeUTC: 2024-02-14 03:41:58.404"]["2024-02-14T03:41:58.4231673+00:00","TargetFilename: C:UsersCyberJunkieAppDataRoamingPhoto and Fax VnPhoto and vn 1.1.2installF97891CWindowsVolumeGamesviewer.exe","CreationTimeUTC: 2024-01-10 18:12:26.670","PreviousCreationTimeUTC: 2024-02-14 03:41:58.420"]["2024-02-14T03:41:58.4258718+00:00","TargetFilename: C:UsersCyberJunkieAppDataRoamingPhoto and Fax VnPhoto and vn 1.1.2installF97891CWindowsVolumeGamesddengine.dll","CreationTimeUTC: 2024-01-10 18:12:26.406","PreviousCreationTimeUTC: 2024-02-14 03:41:58.420"]["2024-02-14T03:41:58.4277653+00:00","TargetFilename: C:UsersCyberJunkieAppDataRoamingPhoto and Fax VnPhoto and vn 1.1.2installF97891CWindowsVolumeGamesUVncVirtualDisplayUVncVirtualDisplay.dll","CreationTimeUTC: 2024-01-10 18:12:26.905","PreviousCreationTimeUTC: 2024-02-14 03:41:58.420"]["2024-02-14T03:41:58.4288308+00:00","TargetFilename: C:UsersCyberJunkieAppDataRoamingPhoto and Fax VnPhoto and vn 1.1.2installF97891CWindowsVolumeGamesvnchooks.dll","CreationTimeUTC: 2024-01-10 18:12:26.686","PreviousCreationTimeUTC: 2024-02-14 03:41:58.420"]["2024-02-14T03:41:58.4299750+00:00","TargetFilename: C:UsersCyberJunkieAppDataRoamingPhoto and Fax VnPhoto and vn 1.1.2installF97891CWindowsVolumeGamesUVncVirtualDisplayuvncvirtualdisplay.cat","CreationTimeUTC: 2024-01-10 18:12:26.889","PreviousCreationTimeUTC: 2024-02-14 03:41:58.420"]["2024-02-14T03:41:58.4308868+00:00","TargetFilename: C:UsersCyberJunkieAppDataRoamingPhoto and Fax VnPhoto and vn 1.1.2installF97891CWindowsVolumeGamesUVncVirtualDisplayUVncVirtualDisplay.inf","CreationTimeUTC: 2024-01-10 18:12:27.013","PreviousCreationTimeUTC: 2024-02-14 03:41:58.420"]

有很多文件跟这个事件有关,但其中只有一个是PDF文件:

代码语言:javascript代码运行次数:0运行复制

PS  > cat .�40408132435_EvtxECmd_Output.json | jq -c 'select(.EventId == 2)' | findstr 10672 | findstr pdf | jq -s '.[] | [.TimeCreated, .PayloadData4, .PayloadData5, .PayloadData6]'["2024-02-14T03:41:58.4101450+00:00","TargetFilename: C:UsersCyberJunkieAppDataRoamingPhoto and Fax VnPhoto and vn 1.1.2installF97891CTempFolder~.pdf","CreationTimeUTC: 2024-01-14 08:10:06.029","PreviousCreationTimeUTC: 2024-02-14 03:41:58.404"]

其中,PDF文件的时间戳被修改为了「2024-01-14 08:10:06」。

终止执行

日志记录中只有一条进程终止事件(Event ID 5),该事件属于恶意软件:

代码语言:javascript代码运行次数:0运行复制

PS > cat .�40408132435_EvtxECmd_Output.json | jq 'select(.EventId == 5)'{"PayloadData1": "ProcessID: 10672, ProcessGUID: 817bddf3-3684-65cc-2d02-000000001900","UserName": "DESKTOP-887GK2LCyberJunkie","ExecutableInfo": "C:UsersCyberJunkieDownloadsPreventivo24.02.14.exe.exe","MapDescription": "Process terminated","ChunkNumber": 2,"Computer": "DESKTOP-887GK2L","Payload": "{"EventData":{"Data":[{"@Name":"RuleName","#text":"-"},{"@Name":"UtcTime","#text":"2024-02-14 03:41:58.795"},{"@Name":"ProcessGuid","#text":"817bddf3-3684-65cc-2d02-000000001900"},{"@Name":"ProcessId","#text":"10672"},{"@Name":"Image","#text":"C:\Users\CyberJunkie\Downloads\Preventivo24.02.14.exe.exe"},{"@Name":"User","#text":"DESKTOP-887GK2L\CyberJunkie"}]}}","UserId": "S-1-5-18","Channel": "Microsoft-Windows-Sysmon/Operational","Provider": "Microsoft-Windows-Sysmon","EventId": 5,"EventRecordId": "118907","ProcessId": 3028,"ThreadId": 4412,"Level": "Info","Keywords": "Classic","SourceFile": "Z:hackthebox-sherlocksunit42Microsoft-Windows-Sysmon-Operational.evtx","ExtraDataOffset": 0,"HiddenRecord": false,"TimeCreated": "2024-02-14T03:41:58.7996518+00:00","RecordNumber": 161}

该事件发生于「2024-02-14 03:41:58」。

分析结果

时间线

蓝队技术 | 使用Sysmon日志识别和分析Windows恶意活动

问题的答案

蓝队技术 | 使用Sysmon日志识别和分析Windows恶意活动

以上就是蓝队技术 | 使用Sysmon日志识别和分析Windows恶意活动的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/482183.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年11月8日 11:55:38
下一篇 2025年11月8日 11:56:20

相关推荐

  • Go语言中获取结构体方法的可调用函数引用

    Go语言中,直接获取结构体方法的函数引用与普通函数有所不同,特别是对于带接收者的方法。本文将详细介绍三种主要方式来获取结构体方法的可调用函数引用:方法表达式、将方法调用封装为匿名函数(传入接收者)以及利用闭包捕获接收者。通过示例代码和解释,帮助开发者理解并选择适合场景的方法,从而灵活地处理Go语言中…

    2025年12月16日
    000
  • Golang HTTP请求错误处理与状态码解析

    正确处理Go中HTTP请求的错误与状态码:网络错误由error返回,需判空resp避免panic;非200状态码需显式检查StatusCode并读取Body;始终defer resp.Body.Close()防止泄漏。 在Go语言中处理HTTP请求时,错误处理和状态码解析是确保程序健壮性的关键环节。…

    2025年12月16日
    000
  • Go语言中实现正则表达式不区分大小写匹配

    本文详细介绍了在Go语言中实现正则表达式不区分大小写匹配的高效方法。针对用户输入动态构建正则表达式的场景,传统的字符逐个转换大小写方案显得繁琐。通过在正则表达式字符串前添加 (?i) 标志,可以简洁地开启不区分大小写模式,无论是固定模式还是动态构建模式,都能轻松实现,并推荐查阅相关官方文档以获取更多…

    2025年12月16日
    000
  • Go语言中通过类型断言识别并操作实现特定接口的结构体

    本文旨在阐述在Go语言中,如何从一个包含不同类型值的[]interface{}集合中,高效地识别出所有实现了特定接口的结构体,并对它们执行相应的接口方法。核心方法是利用Go的类型断言机制,结合ok模式进行安全的运行时类型检查,从而避免直接使用反射包进行复杂操作。 在go语言的实际开发中,我们有时会遇…

    2025年12月16日
    000
  • 如何使用Golang管理多集群Kubernetes

    使用Golang结合client-go可高效管理多集群Kubernetes环境。通过为每个集群创建独立的rest.Config和Clientset实例,并用map组织客户端,实现跨集群资源操作。示例包括批量获取Pod数量、并发执行任务及基于控制器模式的跨集群协调。建议通过环境变量管理kubeconf…

    2025年12月16日
    000
  • Go语言net/http包:优雅处理根路径与多HTTP方法请求

    本教程探讨Go语言标准库net/http中如何高效且规范地处理对根路径/的HTTP请求,并根据请求方法(如GET、POST)执行不同逻辑。文章将介绍精准路径匹配、switch语句处理方法以及何时考虑使用第三方路由库如gorilla/mux,旨在帮助开发者构建健壮的Web服务。 在go语言中构建web…

    2025年12月16日
    000
  • 如何使用Golang实现用户会话管理

    使用Cookie与服务端存储实现会话管理,通过生成唯一Session ID并存入Cookie,服务端用map或Redis保存数据;结合中间件校验登录状态,提升安全性需设置HttpOnly、Secure及定期清理过期会话,可借助Gorilla/sessions等库简化开发。 在Golang中实现用户会…

    2025年12月16日
    000
  • 如何在Golang中实现协程间同步

    使用channel可实现协程同步,如通过无缓冲channel等待任务完成:main函数创建done通道,启动协程执行任务并发送完成信号,主线程接收信号后继续,确保任务结束前不退出。 在Golang中,协程(goroutine)之间的同步主要依赖于通道(channel)和标准库提供的同步原语。合理使用…

    2025年12月16日
    000
  • Go语言中通过JWT实现Google服务账号授权教程

    本教程详细介绍了如何在Go语言中利用JSON Web Token (JWT) 实现Google服务账号的授权流程。文章将指导您完成依赖安装、服务账号凭证的准备(包括p12密钥到PEM格式的转换),并提供完整的Go代码示例,展示如何使用goauth2/oauth/jwt包获取访问令牌。同时,文章强调了…

    2025年12月16日
    000
  • Golang文件处理与IO操作项目示例

    先实现日志文件读取、错误行筛选、备份写入及原文件清空。通过os.Open读取app.log,bufio.Scanner按行扫描,strings.Contains过滤含”ERROR”的行,os.Create创建error_backup.log写入错误日志,最后os.Trunca…

    2025年12月16日
    000
  • 如何在Golang中实现模板模式规范业务流程

    Go语言通过接口和组合实现模板模式,定义算法骨架并延迟可变步骤。1. 定义OrderProcessor接口与Order结构体;2. 创建OrderTemplate结构体封装固定流程,调用接口方法处理变化逻辑;3. 实现RegularOrderProcessor和VipOrderProcessor结构…

    2025年12月16日
    000
  • Golang零值语法特性与使用场景

    Go的零值机制确保变量声明后自动初始化为对应类型的默认值,避免未初始化问题。数值、布尔、字符串分别初始化为0、false、””;指针、切片、通道、映射的零值为nil,结构体字段按类型取零值。该特性支持安全的默认状态管理,广泛应用于配置初始化、并发控制及工厂模式,提升代码简洁性…

    2025年12月16日
    000
  • HTTP客户端请求参数解析与重用实践

    HTTP请求参数需统一解析与重用,提升系统稳定性;通过框架注解或手动方式提取查询字符串、请求体、头部及路径参数,集中处理避免冗余;采用上下文传递、参数包装类、网关层注入和缓存机制实现跨模块复用;注意参数校验、敏感信息保护、生命周期管理与文档说明,确保安全性与可维护性。 在现代Web开发中,HTTP客…

    2025年12月16日
    000
  • Go语言中结构体与错误同时返回的惯用方式

    本文探讨Go语言函数在返回结构体值类型和错误时,当发生错误应如何处理结构体的返回值。文章重点阐述了在错误发生时,返回零值结构体与错误是Go的惯用模式,强调调用方应始终优先检查错误,并忽略非零错误时的其他返回值。 问题剖析:结构体值与错误返回的困境 在go语言中,函数通常通过返回一个结果值和一个err…

    2025年12月16日
    000
  • Go语言集合元素存在性检查:slices.Contains与map的高效实践

    本文探讨Go语言中检查元素是否存在于集合的多种方法,对比Python的’in’操作。对于Go 1.18及更高版本,可使用slices.Contains函数;对于早期版本,需手动实现遍历函数。若需高效的O(1)查找,推荐使用map数据结构,它能显著提升在大数据量下的查询性能。 …

    2025年12月16日
    000
  • Go语言函数返回结构体与错误处理的惯用模式

    在Go语言中,当函数需要返回一个非指针结构体类型或一个错误时,由于结构体不能为nil,初学者常感到困惑。本文将探讨Go语言处理此类场景的惯用方法,即利用命名返回值的零值特性,并在错误发生时返回该零值结构体,强调调用方应优先检查错误,不依赖其他返回值。 函数返回结构体或错误的挑战 在go语言中,一个常…

    2025年12月16日
    000
  • 使用HTML5 标签进行音频流传输的实现方法

    本文旨在介绍如何使用HTML5 标签实现音频流传输,重点讨论在Go语言环境下,如何将实时未压缩的音频数据流式传输到浏览器。文章将分析使用WAV格式进行流传输的局限性,并提供替代方案,包括修改WAV文件头以及使用其他更适合流式传输的格式。同时,也会介绍一些可能用到的Go语言库,并提供使用ffmpeg进…

    2025年12月16日
    000
  • CGO 互操作:安全有效地管理 C 语言 void* 数据

    在 Go 语言中使用 cgo 封装 C 库时,处理 C 语言中的 void* 字段是一个常见挑战。本文将深入探讨为何将 void* 直接映射为 Go 的 interface{} 是错误的方法,并提供一种安全且符合 Go 语言习惯的最佳实践,通过 unsafe.Pointer 与特定 Go 指针类型进…

    2025年12月16日
    000
  • 如何在Golang中实现REST API服务

    答案:Go语言通过net/http库可快速构建REST API,结合gorilla/mux实现路由管理,支持JSON数据处理与标准HTTP方法操作。 在Golang中实现REST API服务并不复杂,Go语言标准库提供了足够的支持来快速搭建一个高效、可靠的HTTP服务。结合简洁的语法和强大的并发模型…

    2025年12月16日
    000
  • Golang如何使用gRPC构建高性能服务

    Go语言结合gRPC可高效构建微服务,首先定义Proto文件并生成代码,接着实现服务端和客户端逻辑,最后通过压缩、连接复用、超时控制、流式RPC及监控追踪等手段优化性能,充分发挥其高并发、低延迟优势。 Go语言凭借其轻量级并发模型和高效网络编程能力,非常适合构建高性能gRPC服务。使用gRPC可以在…

    2025年12月16日
    000

发表回复

登录后才能评论
关注微信