首页
社区
课程
招聘
[原创]任务管理器里隐藏服务名HideSrv
2020-4-11 15:31 17799

[原创]任务管理器里隐藏服务名HideSrv

2020-4-11 15:31
17799
背景:
    前段时间有个需求,一个正规项目需要不考虑杀毒的情况下在任务管理器里隐藏服务名,各位大佬别喷先,声明一点:绝对是正规项目。虽然解释有点尴尬,但是的确是正规项目里有这个需求,不是病毒不是木马。职业操守是有的。不多说了,因为这个需求很容易越描越黑。。。

    遥想多年前就隐约的记得做过这么个东西,当时是hook的taskmgr.exe里四个api( EnumServicesStatusA/W/ExA/ExW )和mmc.exe里的EnumServiceGroupW
    于是找出代码来往win7下面实验了下,结果还是令人满意的。但是在win8和win10下实验了一下的时候,却发现了问题。结果不行!!!

    这一下就麻烦大了,研究点东西资料不多的时候还是很头疼的,最终没结果的时候问了下prochg老大,经过老大指点原来开始走rpc了,有了这个指引点之后
迅速的就想办法hookservices了,这样也方便全部接管,也顺利的定位到了 rpcrt4.dll!NdrClientCall2这个,然后这个是一个变参,不好hook,不过功夫不付有心人,
至于可变参数如何hook不在讨论范围,有兴趣的可以自行搜索一下,还是很有意思的。当hook这个成功之后,又是一个问题,如何注入services.exe.

    接下来不说怎么注入这个,我只想说的是:这两个大动作 注入services.exe和hook  rpcrt4.dll!NdrClientCall2 完全就有大概率让用户蓝屏死机了。。考虑了良久,决定放弃这个想法,但是路在何方?

    还是经prochg老大一句点醒,一个关键词 acl.

    哎呀我去,acl三个字母,就搞定了,其实说到这里懂的就都懂了,安全可靠稳定放心实用。

    感慨一句,认识大佬就是爽,虽然简单的一个关键词,但是那都是搞定问题的关键。好了,放码。

    收了代码不回帖的木有小jj


[CTF入门培训]顶尖高校博士及硕士团队亲授《30小时教你玩转CTF》,视频+靶场+题目!助力进入CTF世界

上传的附件:
收藏
点赞8
打赏
分享
最新回复 (32)
雪    币: 1012
活跃值: (627)
能力值: ( LV9,RANK:181 )
在线值:
发帖
回帖
粉丝
FiveEyes 2020-4-11 15:39
2
0
雪    币: 22
活跃值: (423)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
靴子 2020-4-11 15:58
3
0
试了下 没效果。。win7X64
雪    币: 429
活跃值: (368)
能力值: ( LV6,RANK:81 )
在线值:
发帖
回帖
粉丝
mlgbwoai 1 2020-4-11 16:02
4
1
管理员 并重启taskmgr.exe
雪    币: 22
活跃值: (423)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
靴子 2020-4-11 16:11
5
0
重启好用了 谢谢分享 好像是用SetServiceObjectSecurity实现的。 
雪    币: 9934
活跃值: (2554)
能力值: ( LV6,RANK:87 )
在线值:
发帖
回帖
粉丝
Lixinist 1 2020-4-11 16:32
6
0
6次下载,2个人回帖。嗯emmm
最后于 2020-4-11 16:32 被Lixinist编辑 ,原因:
雪    币: 429
活跃值: (368)
能力值: ( LV6,RANK:81 )
在线值:
发帖
回帖
粉丝
mlgbwoai 1 2020-4-11 16:36
7
0
这下得找 雮尘珠 解除jj了
雪    币: 18
活跃值: (974)
能力值: ( LV7,RANK:110 )
在线值:
发帖
回帖
粉丝
猪会被杀掉 1 2020-4-11 16:54
8
0
靴子 重启好用了 谢谢分享 好像是用SetServiceObjectSecurity实现的。 [em_1]
里面是LIB文件。。。。花几分钟凑了段隐藏的代码给伸手党。
雪    币: 18
活跃值: (974)
能力值: ( LV7,RANK:110 )
在线值:
发帖
回帖
粉丝
猪会被杀掉 1 2020-4-11 16:55
9
0
靴子 重启好用了 谢谢分享 好像是用SetServiceObjectSecurity实现的。 [em_1]
#include <windows.h>
#include <stdio.h>
#include <AccCtrl.h>
#include <sddl.h>
#include <aclapi.h>
#include "HideSrv.h"
BOOL AdjustAccessRights(char *lpszServiceName)
{
  BOOL bDaclPresent = FALSE;
  BOOL bDaclDefaulted = FALSE;
  SC_HANDLE schManager = NULL;
  SC_HANDLE schService = NULL;
  PACL pacl = NULL;
  PACL pnewacl = NULL;
  EXPLICIT_ACCESS exa;
  DWORD dwSize = 0;
  DWORD code = ERROR_SUCCESS;
  SECURITY_DESCRIPTOR sd;
  PSECURITY_DESCRIPTOR psdesc = NULL;
  BOOL bError = FALSE;
  memset(&exa, 0, sizeof(exa));
  memset(&sd, 0, sizeof(sd));
  schManager = OpenSCManager(NULL, NULL, SC_MANAGER_CONNECT);
  if (!schManager)
  {
    bError = TRUE;
  }
  if (!bError)
  {
    schService = OpenService(schManager, lpszServiceName, READ_CONTROL | WRITE_DAC);
    if (!schService)

    {
      bError = TRUE;
    }
  }
  if (!bError)
  {
    if (!QueryServiceObjectSecurity(schService, DACL_SECURITY_INFORMATION, &sd, 0, &dwSize))
    {
      if (GetLastError() == ERROR_INSUFFICIENT_BUFFER)
      {
        psdesc = (PSECURITY_DESCRIPTOR)HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, dwSize);
        if (psdesc == NULL)
        {
          bError = TRUE;
        }
        if (!QueryServiceObjectSecurity(schService, DACL_SECURITY_INFORMATION, psdesc, dwSize, &dwSize))
        {
          bError = TRUE;
        }
      }
      else {
        bError = TRUE;
      }
    }
  }
  if (!bError)
  {
    wchar_t			sddl[] = L"D:(D;;DCWPDTSD;;;IU)(D;;DCWPDTSD;;;SU)(D;;DCWPDTSD;;;BA)(A;;CCSWLOCRRC;;;IU)(A;;CCSWLOCRRC;;;SU)(A;;CCSWRPWPDTLOCRRC;;;SY)(A;;CCDCSWRPWPDTLOCRSDRCWDWO;;;BA)";
    PSECURITY_DESCRIPTOR	sd = nullptr;
    DWORD			SecurityDescriptorSize = 0;
    if (!ConvertStringSecurityDescriptorToSecurityDescriptorW(sddl, SDDL_REVISION_1, &sd, &SecurityDescriptorSize))
    {
    }
    if (!SetServiceObjectSecurity(schService, DACL_SECURITY_INFORMATION, sd))
    {
      bError = TRUE;
    }
  }
  if (pnewacl)
  {
    LocalFree(pnewacl);
  }
  if (psdesc)
  {
    HeapFree(GetProcessHeap(), 0, psdesc);
  }
  if (schService)
  {
    CloseServiceHandle(schService);
  }
  if (schManager)
  {
    CloseServiceHandle(schManager);
  }
  return(bError);
}
int main()
{
  printf("hide ret = %d\n", AdjustAccessRights("wmiApSrv"));
  return(0);
}



雪    币: 429
活跃值: (368)
能力值: ( LV6,RANK:81 )
在线值:
发帖
回帖
粉丝
mlgbwoai 1 2020-4-11 17:07
10
0
自古评论出人才
雪    币: 1115
活跃值: (1911)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
Oday小斯 2020-4-11 17:09
11
0
感谢分享
雪    币: 182
活跃值: (576)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
柒雪天尚 2020-4-11 17:20
12
0
o ? 好不好Hook.。。第一次听说还跟是不是变参有关系  0.0
雪    币: 2534
活跃值: (1648)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
lYl无 2020-4-11 17:25
13
0
盲猜更改的安全描述
雪    币: 774
活跃值: (1511)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
tjszlqq 1 2020-4-12 10:39
14
0
收藏一份
雪    币: 504
活跃值: (3031)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
wem 2020-4-12 21:52
15
0
收了
雪    币: 6320
活跃值: (2189)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
shuyangzjg 2020-4-12 22:15
16
0
收藏
雪    币: 73
活跃值: (893)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
hixhi 2020-4-12 22:33
17
0
我就想问下楼主,为啥你们这么牛逼
雪    币: 74
活跃值: (30)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
东来 2020-4-13 15:21
18
1
收藏一份
雪    币:
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
mb_xfgjwuol 2020-4-15 16:44
19
0
看看,怕是看不懂。
雪    币: 0
活跃值: (27)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
maybelieve 2020-4-15 17:48
20
0
厉害
雪    币: 3350
活跃值: (3372)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
fengyunabc 1 2020-4-22 20:27
21
0
感谢分享!
雪    币: 310
活跃值: (1897)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
niuzuoquan 2020-4-23 20:39
22
0
mark
雪    币: 2264
活跃值: (297)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
cdanlover 2 2020-4-27 13:21
23
0
NB
雪    币: 259
活跃值: (283)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
ZwCopyAll 2020-4-27 14:30
24
0
没有代码 只有lib?
雪    币: 4006
活跃值: (596)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
放学打我不 1 2020-4-28 17:19
25
0
666
游客
登录 | 注册 方可回帖
返回