本地安全管理审核UDF 第2版 - lsasecur.au3

第2版的lsasecur包括第1版LocalSecurityAuthority的所有功能,并添加了一些新特性(带*星号的为新功能):

读取或设置文件、服务、注册表、共享文件、内核对象的安全信息。
提升进程权限,模拟SYSTEM登录,或创建任意用户场景下的用户进程。
添加、删除用户或用户组。
读取、设置用户或用户组的各种信息。
添加、删除用户权限。
存取私有数据,或读取系统安全数据库中的各种密码。
*验证文件散列、数字签名。
*利用空白U盘备份用户密码。
*备份及导入“安全描述符”。
*截取程序异常,并恢复程序运行。
*调用DPAPI加解密数据。
*自定义次数的进程实例。
*模拟进程文件路径。
还有很多,非常多。

函数列表:

1:; ___SeReleaseSemaphoreInstance
2:; ___SeSEHDefaultHandler
3:; __SeCertCloseStore
4:; __SeCertFindCertificateInStore
5:; __SeCertGetNameText
6:; __SeCertNameToText
7:; __SeCreateSemaphore
8:; __SeCreateThread
9:; __SeDecodeObject
10:; __SeFileTimeToSystemTime
11:; __SeGetExitCodeThread
12:; __SeGetProcAddress
13:; __SeLongPtrToBytes
14:; __SeMsgClose
15:; __SeMsgGetParam
16:; __SeQueryObject
17:; __SeReleaseSemaphore
18:; __SeSEHDefaultHandler
19:; __SeStringToBytesA
20:; __SeTreeResetSecurityCallBack
21:; __SeVirtualAlloc
22:; __SeWaitForObject
23:; _SeAddAccessAllowedAceEx
24:; _SeAddAccessDeniedAceEx
25:; _SeAddAccountRight
26:; _SeAddAce
27:; _SeAddAuditAccessAceEx
28:; _SeAddLocalGroupMembers
29:; _SeAdjustTokenPrivs
30:; _SeAllocAndInitSid
31:; _SeAllocGUID
32:; _SeAllocLUID
33:; _SeApiBufferFree
34:; _SeAreAllAccessesGranted
35:; _SeAreAnyAccessesGranted
36:; _SeBackupPassword
37:; _SeBinaryToString
38:; _SeCheckTokenMembership
39:; _SeCipherDes16
40:; _SeCloseHandle
41:; _SeClosePolicy
42:; _SeCompareUserRight
43:; _SeCompareUserRightEx
44:; _SeConvertDesiredAccess
45:; _SeConvertSDToStringSD
46:; _SeConvertSidToSSid
47:; _SeConvertSSidToSid
48:; _SeConvertStringSDToSD
49:; _SeCopyMemory
50:; _SeCopySid
51:; _SeCreateAce
52:; _SeCreateBuffer
53:; _SeCreateLocalGroup
54:; _SeCreateLocalUser
55:; _SeCreateLogonProcess
56:; _SeCreateSecret
57:; _SeCreateSecurityDescriptor
58:; _SeCreateServiceSid
59:; _SeCreateSystemProcess
60:; _SeCreateUserProcess
61:; _SeCreateWellKnownSid
62:; _SeDeleteAce
63:; _SeDeleteLocalGroup
64:; _SeDeleteLocalGroupMembers
65:; _SeDeleteLocalUser
66:; _SeDuplicateAcl
67:; _SeDuplicateHandle
68:; _SeDuplicateSD
69:; _SeDuplicateToken
70:; _SeDuplicateTokenEx
71:; _SeEnumAccountRights
72:; _SeEnumAccounts
73:; _SeEnumAccountsWithUserRight
74:; _SeEnumEntriesFromAcl
75:; _SeEnumExplicitEntriesFromAcl
76:; _SeEnumInheritedEntriesFromAcl
77:; _SeEnumLocalGroupMembers
78:; _SeEnumLocalGroups
79:; _SeEnumLocalUsers
80:; _SeEnumPrivateData
81:; _SeEnumPrivs
82:; _SeEnumTokenGroups
83:; _SeEnumTokenPrivs
84:; _SeEnumUserLocalGroups
85:; _SeEnumWellKnownSids
86:; _SeEqualDomainSid
87:; _SeEqualPrefixSid
88:; _SeEqualSid
89:; _SeEqualToken
90:; _SeExportSecurityDescriptor
91:; _SeFillMemory
92:; _SeFormatMsg
93:; _SeFreeMemory
94:; _SeFreeSid
95:; _SeGenRandom
96:; _SeGetAce
97:; _SeGetAceDetails
98:; _SeGetAclInformation
99:; _SeGetEffectiveRightsFromAcl
100:; _SeGetFileSecurity
101:; _SeGetFileSignature
102:; _SeGetInheritanceSource
103:; _SeGetKernelObjectSecurity
104:; _SeGetLengthSid
105:; _SeGetLocalGroupInfo
106:; _SeGetLocalUserInfo
107:; _SeGetNamedAccessRights
108:; _SeGetNamedSecurityInfo
109:; _SeGetRegKeySecurity
110:; _SeGetSecretSecurity
111:; _SeGetSecurityDescriptorControl
112:; _SeGetSecurityDescriptorDacl
113:; _SeGetSecurityDescriptorGroup
114:; _SeGetSecurityDescriptorLength
115:; _SeGetSecurityDescriptorOwner
116:; _SeGetSecurityDescriptorSacl
117:; _SeGetSecurityInfo
118:; _SeGetServiceSecurity
119:; _SeGetShareObjectDacl
120:; _SeGetSidIdentifierAuthority
121:; _SeGetSidSubAuthority
122:; _SeGetSidSubAuthorityCount
123:; _SeGetTokenInformation
124:; _SeGetTokenType
125:; _SeGetTokenUser
126:; _SeGetUserAccountSid
127:; _SeGetUserModals
128:; _SeGetUserName
129:; _SeGetWellKnownAccountSid
130:; _SeHashCertificate
131:; _SeHashFile
132:; _SeHeapAlloc
133:; _SeHeapFree
134:; _SeHeapSize
135:; _SeImpersonateLoggedOnUser
136:; _SeImpersonateProcessPath
137:; _SeImpersonateSystemContext
138:; _SeImportSecurityDescriptor
139:; _SeInitAcl
140:; _SeInitBufferW
141:; _SeInitExplicitEntries
142:; _SeInitObjAttrib
143:; _SeInitSecurityDescriptor
144:; _SeInitSecurityQos
145:; _SeInitSid
146:; _SeIsEntryInheritable
147:; _SeIsPrivEnabled
148:; _SeIsPrivsEnabled
149:; _SeIsSelfRelativeSD
150:; _SeIsTokenRestricted
151:; _SeIsUserAdmin
152:; _SeIsUserAdminEx
153:; _SeIsValidAce
154:; _SeIsValidAcl
155:; _SeIsValidHandle
156:; _SeIsValidSecurityDescriptor
157:; _SeIsValidSid
158:; _SeIsWellKnownSid
159:; _SeLastError
160:; _SeLocalFree
161:; _SeLogonUser
162:; _SeLongToDWORD
163:; _SeLookupAccountName
164:; _SeLookupAccountSid
165:; _SeLookupPrivDescription
166:; _SeLookupPrivName
167:; _SeLookupPrivsFromDacl
168:; _SeLookupPrivValue
169:; _SeMakeAbsoluteSD
170:; _SeMakeSelfRelativeSD
171:; _SeNetBuffer
172:; _SeNetBufferSize
173:; _SeOpenPolicy
174:; _SeOpenProcess
175:; _SeOpenProcessToken
176:; _SeOpenRegKey
177:; _SeOpenSecret
178:; _SeOpenService
179:; _SeOpenUserBrowser
180:; _SePolicyQueryAuditEvent
181:; _SePolicyQueryInformation
182:; _SePolicyQueryLsaServerRole
183:; _SePolicySetAuditEvent
184:; _SePolicySetInformation
185:; _SeProcessHeap
186:; _SeProtectData
187:; _SeProtectMemory
188:; _SeProtectObjectFromClose
189:; _SeQuerySecret
190:; _SeReadBytes
191:; _SeReadProcessMemory
192:; _SeRegisterExceptionHandler
193:; _SeRegisterMemoryNotify
194:; _SeRemoveAccountRight
195:; _SeRetrievePrivateData
196:; _SeRevertToSelf
197:; _SeSetEntriesInAcl
198:; _SeSetEntriesInAcl1
199:; _SeSetEntriesOrder
200:; _SeSetFileInheritSecurity
201:; _SeSetFileSecurity
202:; _SeSetKernelObjectSecurity
203:; _SeSetLocalUserInfo
204:; _SeSetNamedSecurityInfo
205:; _SeSetRegKeySecurity
206:; _SeSetSecret
207:; _SeSetSecurityDescriptorControl
208:; _SeSetSecurityDescriptorDacl
209:; _SeSetSecurityDescriptorGroup
210:; _SeSetSecurityDescriptorOwner
211:; _SeSetSecurityDescriptorSacl
212:; _SeSetSecurityInfo
213:; _SeSetServiceSecurity
214:; _SeSetShareObjectDacl
215:; _SeSetTokenInformation
216:; _SeSetUserModals
217:; _SeSingletonEx
218:; _SeStorePrivateData
219:; _SeStringToBinary
220:; _SeTreeResetNamedSecurityInfo
221:; _SeTreeResetNamedSecurityInfoEx
222:; _SeUnprotectData
223:; _SeUnprotectMemory
224:; _SeWriteBytes
225:; _SeWriteProcessMemory
226:; snts

所有_Se*开头的函数都是用户可以调用的函数,除此之外,其他以__Se*或___Se*开头的函数仅为内部调用。

几个函数的示例:
1、_SeBackupPassword - 利用空白U盘备份用户密码。

#include <lsasecur.au3>

_SeBackupPassword(0, 0) ; 同步方式备份用户密码。

$hBackupThread = _SeBackupPassword(0, 1) ; 异步方式。

; 等待备份完成。
If $hBackupThread Then
        While __SeWaitForObject($hBackupThread, 2)
        WEnd
EndIf

2、_SeCreateSystemProcess - 创建系统级进程(仅支持于32位系统)。

#include <lsasecur.au3>

$sFilePath = @WindowsDir & "\regedit.exe"

$tProcess = _SeCreateSystemProcess($sFilePath)
MsgBox(0, _SeFormatMsg(), _
        "Process Id: " & DllStructGetData($tProcess, "ProcessId") & @CRLF & _
        "Thread Id: " & DllStructGetData($tProcess, "ThreadId"))

3、_SeGetFileSignature - 获取文件签名。

#include <lsasecur.au3>

$sFilePath = @AutoItExe & "\..\Au3Info.exe"
$aSignature = _SeGetFileSignature($sFilePath)
_ArrayDisplay($aSignature, _SeFormatMsg())

4、_SeHashFile - 验证文件散列。

#include <lsasecur.au3>

$sOutput = "File path:        %s\n\nCRC:        %s\nMD5:        %s\nMD4:        %s\nSHA1:        %s"

$sFilePath = @SystemDir & "\cmd.exe"

$bCrc = _SeHashFile($sFilePath, $SE_CALG_CRC32)
$bMd5 = _SeHashFile($sFilePath, $SE_CALG_MD5)
$bMd4 = _SeHashFile($sFilePath, $SE_CALG_MD4)
$bSha = _SeHashFile($sFilePath, $SE_CALG_SHA)

MsgBox(0, "Hashing", StringFormat($sOutput, $sFilePath, $bCrc, $bMd5, $bMd4, $bSha))

5、_SeImpersonateProcessPath - 模拟构造进程路径。

#include <lsasecur.au3>

MsgBox(0, "_SeImpersonateProcessPath", "@AutoItExe=" & @AutoItExe)
_SeImpersonateProcessPath(@WindowsDir & "\regedit.exe")

MsgBox(0, "_SeImpersonateProcessPath", "@AutoItExe=" & @AutoItExe)

6、_SeImpersonateSystemContext - 模拟SYSTEM用户登录。

#include <lsasecur.au3>

$hToken = _SeImpersonateSystemContext()
MsgBox(0, "@UserName=" & @UserName, _SeFormatMsg("_SeImpersonateSystemContext"))

; Do something with SYSTEM privilege.

_SeCloseHandle($hToken)
_SeRevertToSelf()
MsgBox(0, "@UserName=" & @UserName, _SeFormatMsg("_SeRevertToSelf"))

7、_SeRegisterExceptionHandler - 截取程序异常,并恢复程序运行。

#include <lsasecur.au3>

Const $INVALID_POINTER = -1        ; 非法指针,

$sOutput = "异常代码:        0x%08X\n异常地址:        0x%08X\n自定义参数:        0x%08X"

; 注册“安全函数”,程序发生异常时,将跳转到这个函数中。
$hSafeAddress = DllCallBackRegister("_ExceptionCallBack", "none", "ptr")

; 获取“安全函数”地址。
$pSafeAddress = DllCallBackGetPtr($hSafeAddress)

; 注册异常处理。
_SeRegisterExceptionHandler( _
        $pSafeAddress, _                ; 安全函数的地址。
        7, _                                ; 安全函数的自定义参数,可以是任意32位值。
        Default, _                        ; 安全函数的返回地址,默认为Kernel32.ExitProcess函数。
        1)                                ; Kernel32.ExitProcess函数的参数。

; 创建非法结构。
$tTest = DllStructCreate("dword Test", $INVALID_POINTER)

; 下面这句将会引发一个“内存不能为‘read’”的异常。
DllStructGetData($tTest, "Test")

Func _ExceptionCallBack($pSafeAddress)
        Local $tSafeAddress = DllStructCreate($tagSE_SAFE_ADDRESS, $pSafeAddress)
        Local $tRecord = DllStructCreate($tagSE_EXCEPTION_RECORD, DllStructGetData($tSafeAddress, "ExceptionRecord"))

        MsgBox(48, "发生异常", StringFormat($sOutput, _
                DllStructGetData($tRecord, "ExceptionCode"), _                ; 异常代码
                DllStructGetData($tRecord, "ExceptionAddress"), _        ; 发生异常的地址
                DllStructGetData($tSafeAddress, "Parameter")))                ; 用户自定义参数

        ; 本函数执行完成之后,程序流程将会跳转到Kernel32.ExitProcess函数中,_
        ; 并非以AutoIt的常规方式退出进程,所以要先清除托盘图标。
        Opt("TrayIconHide", 1)
EndFunc        ;==>_ExceptionCallBack

8、_SeSingletonEx - 允许同时运行自定义次数的进程实例。

#include <lsasecur.au3>

Const $iMaxInstances = 2

$sOutput = "本程序已有%u个实例同时运行,请先退出其中1个或多个再运行此程序。"

If _SeSingletonEx($iMaxInstances) Then
        MsgBox(48, "", StringFormat($sOutput, $iMaxInstances))
        Exit
EndIf

MsgBox(0, "", "Bingo~")

9、_SeGetFileSecurity - 获取NTFS文件的安全信息。

#include <lsasecur.au3>

$sFilePath = @SystemDir & "\cmd.exe"

$iSecur = BitOR($SE_INFO_OWNER, $SE_INFO_DACL)
$pSecur = _SeGetFileSecurity($sFilePath, $iSecur)

If ($pSecur = 0) Then
        MsgBox(48, "Error", _SeFormatMsg("_SeGetFileSecurity"))
        Exit
EndIf

$pOwner = _SeGetSecurityDescriptorOwner($pSecur)
$pDacl = _SeGetSecurityDescriptorDacl($pSecur)

$sOwner = _SeLookupAccountSid($pOwner)
$aList = _SeEnumEntriesFromAcl($pDacl)

_ArrayDisplay($aList, $sOwner)

10、本地用户、用户组相关的函数。

#include <lsasecur.au3>

; 枚举本地用户。
$aLocalUser = _SeEnumLocalUsers()
_ArrayDisplay($aLocalUser, _SeFormatMsg("_SeEnumLocalUsers"))

; 枚举本地用户组。
$aLocalGroup = _SeEnumLocalGroups()
_ArrayDisplay($aLocalGroup, _SeFormatMsg("_SeEnumLocalGroups"))

; 枚举内置账户。
$aWellKnown = _SeEnumWellKnownSids()
_ArrayDisplay($aWellKnown, _SeFormatMsg("_SeEnumWellKnownSids"))

; 枚举当前用户所属的用户组。
$aUserGroup = _SeEnumUserLocalGroups(@UserName)
_ArrayDisplay($aUserGroup, _SeFormatMsg("_SeEnumUserLocalGroups"))

; 枚举管理员组的成员。
$aMembers = _SeEnumLocalGroupMembers("Administrators")
_ArrayDisplay($aMembers, _SeFormatMsg("_SeEnumLocalGroupMembers"))

12/29/2010更新:
新添加函数:

_SeAccessCheck ; 访问检查
_SeCreateRestrictedToken ; 创建受限令牌
_SeCreateToken ; 创建访问令牌(Powerful)
_SeCreateTrustedToken ; 创建受信任令牌
_SeCreateUntrustedToken ; 创建不受信任的访问令牌
_SeEnumTokenRestrictedSids ; 枚举令牌中的受限SID
_SeGetUserObjectSecurity ; 获取用户对象(桌面、工作站)的安全信息
_SeRestoreExceptionHandler ; 使用默认的异常函数处理程序异常
_SeSetThreadToken ; 设置线程令牌
_SeImpersonateNamedPipeClient ; 模拟命名管道客户端场景
_SeImpersonateSelf ; 模拟自身场景
_SeImpersonateThread ; 模拟线程场景
_SeIsTokenUntrusted ; 判断令牌是否为非信任令牌
_SeSetUserObjectSecurity ; 设置用户对象的安全信息
_SeCreateSecurProcess ; 创建拥有高安全级别的进程

04/24/2011更新:
新添加函数:

_SeVerifySystemCall ; 验证系统函数的调用
_SeCompleteVerifySystemCall ; 完成验证系统函数的调用
_SeCreateAdminToken ; 创建管理员权限令牌(可以指定任意用户名)
_SeCreateUserProcessEx ; 创建用户进程(可以指定父进程)
_SeImpersonateContext ; 模拟进程场景

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值