windows启用SeDebugPrivilege
有很多工具需要启用SeDebugPrivilege才能正常使用,比如mimikatz就有个很经典的 privilege::debug.如果没有这个权限,administrator用openprocess可能都会报错,所以需要提升,管理员组拥有该权限但默认禁用,普通用户不拥有该权限,也就是说仅仅只有管理员账户能启用该权限。这个权限提供了强大的能力以至于可以忽视安全上下文行动。
我们会用到AdjustTokenPrivileges和LookupPrivilegeValueA,以及Token PRIVILEGES结构树
Token PRIVILEGES结构树typedef struct _TOKEN_PRIVILEGES { DWORD PrivilegeCount; LUID_AND_ATTRIBUTES Privileges[ANYSIZE_ARRAY];} TOKEN_PRIVILEGES, *PTOKEN_PRIVILEGES;
PrirvilegeCount 表示Privileges数组中有多少个元素 Privileges 指向L ...
windows创建一个服务
服务Windows服务,是指运行在windows nt操作系统后台的计算机程序.Windows服务必须符合服务控制管理器的接口规则和协议(SCM)
如何创建一个Windows服务分为:1.完成服务程序主函数(进程入口点(Main函数2.完成服务程序内容主函数(ServiceMain3.服务的注册器和卸载器
服务程序主函数这个阶段,主要干两件事:1.设定好SERVICE_TABLE_ENTRY 结构变量,传入服务名和服务主函数2.调用StartServiceCtrlDispatcher函数以下是SERVICE_TABLE_ENTRY结构
typedef struct _SERVICE_TABLE_ENTRYW { LPWSTR lpServiceName; LPSERVICE_MAIN_FUNCTIONW lpServiceProc;}SERVICE_TABLE_ENTRYW, *LPSERVICE_TABLE_ENTRYW;
所以我们的服务程序的主函数只需要像这样写即可
int main(){ S ...
windows消息机制
事件驱动Windows是基于事件驱动的.一般来讲, 服务器处理模型有三种:1每收到一个请求,创建一个新的进程,来处理该请求;2每收到一个请求,创建一个新的线程,来处理该请求;3每收到一个请求,放入一个事件列表,让主进程通过非阻塞I/O方式来处理请求
1 开销较大:每处理一个事件就要新建一个进程,开销太大,但是实现起来很简单2 死锁问题:多线程调节容易遇到死锁问题,程序直接卡死3 逻辑复杂
那么事件驱动的优势在哪里呢。打个比方,我们要获取一个鼠标点击的动作。如果我们通过创建线程或者进程的方法,去循环扫描当前是否有鼠标点击事件那么可能会造成资源浪费(鼠标一直不点击,但仍在进行扫描),响应缓慢(扫描的设备有很多,会造成响应缓慢的问题)等问题。但是事件驱动就不一样了,它的核心原理是以消息队列为核心,当捕获到一个事件(如鼠标点击)时把他放进消息队列,然后当该事件从队列中被取出时,根据事件类型调用不同的函数来进行处理,其中每个事件一般都各自保存各自的处理函数指针,这样,每个消息都有独立的处理函数 。
消息机制事件驱动在Windows下的具象化就是消息机制。事件队列对应过来就是消息队列.
它会为每一 ...
DefenseEvasion收集
前面的话:”免杀一般都是靠组合拳”
EXE加壳没什么好说的。可以自写加壳器等等
添加数字签名不同的杀软对数字签名的敏感性不同,有些杀软可能只检查一下有没有数字签名就过了,有些杀软可能要去验证一下数字签名的正确性,有些可能管都不管数字签名。只能说添加数字签名能稍微提升一下exe的免杀几率。
C++指针执行+申请内存动态加载shellcode首先从cobalt strike上生成拿到shellcode用作本次测试。然后通过下面的代码,直接执行写死在程序里的shellcode。
#include <iostream>#include<Windows.h>int main(){ unsigned char buf[] = "shellcode"; void* exec = VirtualAlloc(0, sizeof buf, MEM_COMMIT, PAGE_EXECUTE_READWRITE); memcpy(exec, buf, sizeof buf); ((void(*)())exec)( ...
C++结合内联汇编编写一个加壳程序
参考:https://blog.csdn.net/qq_31507523/article/details/89438410
学习一下写壳,在以后免杀中使用。
加壳原理手工加壳用010editor手工加壳了解一波原理。加壳原理大致如下
即我们向PE文件添加一个区段并将其设置为入口点,这样PE文件最开始执行的命令就是我们添加的区段也就是壳的指令,壳对加密区进行解密,对压缩区进行解压,将原本的EXE文件还原出来,然后跳转至原程序入口,程序照常运行。
首先生成一个打印hello的exe文件。
#include <stdio.h>int main() { printf("hello");}
我们目前要干的事情是:以手动的形式向PE文件添加一个壳部分并设为程序入口,并使其能跳转回原入口。那就来吧
用010editor打开我们的exe文件,启用exe模板分析。我们首先修改其文件头numverofsection属性,这个属性用来定义当前PE文件存在多少个区段,因为我们要添加一个壳区段,所以我们将其加1变成6
在我们重载模板后我们就会在区段表发现多 ...
横向移动与域控权限维持方法总汇
横向移动PTH如果找到了某个用户的ntlm hash,就可以拿这个ntlm hash当作凭证进行远程登陆了其中若hash加密方式是 rc4 ,那么就是pass the hash若加密方式是aes key,那么就是pass the key注意NTLM和kerberos协议均存在PTH:NTLM自然不用多说kerberos协议也是基于用户的client hash开始一步步认证的,自然也会受PTH影响
那前提就是要获取hash值了
HASH获取1.使用meterpreter里的mimikatz模块
meterpreter>load mimikatzmeterpreter>mimikatz_command -f mimikatz的指令privilege::debug 提权 samdump::hashes dump哈希 或者meterpreter>msv/kerberos/widgst
2.使用meterpreter自带的hash获取模块
meterpreter>hashdumpmeterpreter>run windows/gat ...
Windows内网渗透信息搜集命令总汇
正文前几天面试的时候被师傅问到了这个问题,当时不是很会,现在来学学
本机信息收集查询网络配置信息ipconfig /all
查询本机的服务信息wmic service list brief
查询系统信息systeminfo
查询进程列表tasklist / wmic process list brief
查看计划任务schtasks /query /fo LIST /v 列出计划任务详细信息
查看主机开机时间net statistics workstation
用户相关net user 查看所有用户net localgroup administrators 获取本地管理员信息
查看端口列表netstat -ano
查看已打补丁wmic qfe get Caption,Description,HotFixID,InstalledOn
查看共享列表net share 查看本机共享列表和可访问的域共享列表wmic share get name,path,status 查找共享列表
路由表和arp高速缓存表route print 路由表arp -a arp高速缓存表
防火墙netsh ...
Windows内网基础概览
域,工作组,活动目录工作组工作组可以认为是同一网络内,功能相似的电脑进行的分组。举个例子:“在一个网络内,可能有成百上千台电脑,如果这些电脑不进行分组,都列在“网上邻居”内,可想而知会有多么乱。为了解决这一问题,Windows 9x/NT/2000就引用了“工作组”这个概念,将不同的电脑一般按功能分别列入不同的组中,如财务部的电脑都列入“财务部”工作组中,人事部的电脑都列入“人事部”工作组中。你要访问某个部门的资源,就在“网上邻居”里找到那个部门的工作组名,双击就可以看到那个部门的电脑了。 ”这就是工作组,但是在工作组中的电脑还是各自管理。当其中一台计算机访问另一台计算机时还是要经过另一台计算机的认证的
域域,是一群相互信任的计算机的集合想要访问域中资源就必须经过一台负责每一台联入网络的电脑和用户的验证工作的服务器,这个服务器叫做 域控制器 (Domain Controller,简写为DC) 的安全认证。每个域至少要有一个域控制器。当某计算机连入域时,DC就会鉴别这台电脑是否是属于这个域的,用户使用的登录账号是否存在、密码是否正确。如果以上信息不正确,域控制器就拒绝这个用户从这台电脑登 ...
ARP欺骗&DNS欺骗&mac泛洪攻击
arp协议与欺骗简单概要:通过此协议来获取局域网中某IP地址的mac地址
作用:在局域网中的机器互相发送消息时,靠的是mac地址(也叫以太网地址)来确定目的地址的,而我们只知道IP地址,所以需要arp协议来把ip地址映射为mac地址。 具体实现原理是,比如我想知道192.168.1.1的mac地址,就会在广播域里广播arp请求,ip不是192.168.1.1的主机会自动忽略请求,而192.168.1.1主机则会应答请求,并返回自己的mac地址(由IP定位到mac地址)
arp高速缓存表:这个表用来缓存 ip地址与mac地址 的对应关系有动态表和静态表:
动态表随时间的推移自动添加和删除,每个动态arp缓存都有自己的TTL(生存时间).TTL为0就会被删静态表是永久性的,手动添加和删除。
局域网中ip到mac地址解析过程:1.当缓存表中存在目的IP对应的mac地址时 则直接返回与IP对应的mac地址2.当缓存表中没有对应关系时,则向局域网中发送arp广播请求目的IP的mac,收到arp应答后将对应关系记录到高速缓存表中高速缓存表的优缺点:优点:减少网络通信量,提高通信效率缺点:会造成安全 ...
Windows提权方法汇总
无引号服务路径 ( Trusted Service Paths )先说实用度,比较被动,而且比较看脸。
Windows下服务的权限通常是SYSTEM。如果我们能够替换服务的启动程序为我们的恶意程序(如反弹shell),即相当于获得了SYSTEM权限,达到了提权的目的。无引号服务路径有可能会导致这种情况的发生。所谓无引号服务路径,就是服务启动程序的路径中包含了空格且未被引号包含起来。比如这样
C:\Program Files\floder1\service.exe
因为空格的存在,Windows在启动服务找寻服务启动项时,它会按照以下顺序进行启动项寻找
C:\Program.exeC:\Program Files\Some.exeC:\Program Files\Some Folder\Service.exe
这就给了我们有机可乘的机会:如果我们在服务的上层目录有写入或完全控制权限,我们完全可以将一个可执行文件放在Windows搜寻服务启动项的更靠前顺序上。
我们用以下命令来搜索哪些服务路径没有包含引号
wmic service get name,displayname,pathnam ...