@etcsec-com/etc-collector 1.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (617) hide show
  1. package/.env.example +60 -0
  2. package/.env.test.example +33 -0
  3. package/.github/workflows/ci.yml +83 -0
  4. package/.github/workflows/release.yml +246 -0
  5. package/.prettierrc.json +10 -0
  6. package/CHANGELOG.md +15 -0
  7. package/Dockerfile +57 -0
  8. package/LICENSE +190 -0
  9. package/README.md +194 -0
  10. package/dist/api/controllers/audit.controller.d.ts +21 -0
  11. package/dist/api/controllers/audit.controller.d.ts.map +1 -0
  12. package/dist/api/controllers/audit.controller.js +179 -0
  13. package/dist/api/controllers/audit.controller.js.map +1 -0
  14. package/dist/api/controllers/auth.controller.d.ts +16 -0
  15. package/dist/api/controllers/auth.controller.d.ts.map +1 -0
  16. package/dist/api/controllers/auth.controller.js +146 -0
  17. package/dist/api/controllers/auth.controller.js.map +1 -0
  18. package/dist/api/controllers/export.controller.d.ts +27 -0
  19. package/dist/api/controllers/export.controller.d.ts.map +1 -0
  20. package/dist/api/controllers/export.controller.js +80 -0
  21. package/dist/api/controllers/export.controller.js.map +1 -0
  22. package/dist/api/controllers/health.controller.d.ts +5 -0
  23. package/dist/api/controllers/health.controller.d.ts.map +1 -0
  24. package/dist/api/controllers/health.controller.js +16 -0
  25. package/dist/api/controllers/health.controller.js.map +1 -0
  26. package/dist/api/controllers/jobs.controller.d.ts +13 -0
  27. package/dist/api/controllers/jobs.controller.d.ts.map +1 -0
  28. package/dist/api/controllers/jobs.controller.js +125 -0
  29. package/dist/api/controllers/jobs.controller.js.map +1 -0
  30. package/dist/api/controllers/providers.controller.d.ts +15 -0
  31. package/dist/api/controllers/providers.controller.d.ts.map +1 -0
  32. package/dist/api/controllers/providers.controller.js +112 -0
  33. package/dist/api/controllers/providers.controller.js.map +1 -0
  34. package/dist/api/dto/AuditRequest.dto.d.ts +6 -0
  35. package/dist/api/dto/AuditRequest.dto.d.ts.map +1 -0
  36. package/dist/api/dto/AuditRequest.dto.js +3 -0
  37. package/dist/api/dto/AuditRequest.dto.js.map +1 -0
  38. package/dist/api/dto/AuditResponse.dto.d.ts +17 -0
  39. package/dist/api/dto/AuditResponse.dto.d.ts.map +1 -0
  40. package/dist/api/dto/AuditResponse.dto.js +3 -0
  41. package/dist/api/dto/AuditResponse.dto.js.map +1 -0
  42. package/dist/api/dto/TokenRequest.dto.d.ts +6 -0
  43. package/dist/api/dto/TokenRequest.dto.d.ts.map +1 -0
  44. package/dist/api/dto/TokenRequest.dto.js +3 -0
  45. package/dist/api/dto/TokenRequest.dto.js.map +1 -0
  46. package/dist/api/dto/TokenResponse.dto.d.ts +12 -0
  47. package/dist/api/dto/TokenResponse.dto.d.ts.map +1 -0
  48. package/dist/api/dto/TokenResponse.dto.js +3 -0
  49. package/dist/api/dto/TokenResponse.dto.js.map +1 -0
  50. package/dist/api/middlewares/authenticate.d.ts +12 -0
  51. package/dist/api/middlewares/authenticate.d.ts.map +1 -0
  52. package/dist/api/middlewares/authenticate.js +141 -0
  53. package/dist/api/middlewares/authenticate.js.map +1 -0
  54. package/dist/api/middlewares/errorHandler.d.ts +3 -0
  55. package/dist/api/middlewares/errorHandler.d.ts.map +1 -0
  56. package/dist/api/middlewares/errorHandler.js +30 -0
  57. package/dist/api/middlewares/errorHandler.js.map +1 -0
  58. package/dist/api/middlewares/rateLimit.d.ts +3 -0
  59. package/dist/api/middlewares/rateLimit.d.ts.map +1 -0
  60. package/dist/api/middlewares/rateLimit.js +34 -0
  61. package/dist/api/middlewares/rateLimit.js.map +1 -0
  62. package/dist/api/middlewares/validate.d.ts +4 -0
  63. package/dist/api/middlewares/validate.d.ts.map +1 -0
  64. package/dist/api/middlewares/validate.js +31 -0
  65. package/dist/api/middlewares/validate.js.map +1 -0
  66. package/dist/api/routes/audit.routes.d.ts +5 -0
  67. package/dist/api/routes/audit.routes.d.ts.map +1 -0
  68. package/dist/api/routes/audit.routes.js +24 -0
  69. package/dist/api/routes/audit.routes.js.map +1 -0
  70. package/dist/api/routes/auth.routes.d.ts +6 -0
  71. package/dist/api/routes/auth.routes.d.ts.map +1 -0
  72. package/dist/api/routes/auth.routes.js +22 -0
  73. package/dist/api/routes/auth.routes.js.map +1 -0
  74. package/dist/api/routes/export.routes.d.ts +5 -0
  75. package/dist/api/routes/export.routes.d.ts.map +1 -0
  76. package/dist/api/routes/export.routes.js +16 -0
  77. package/dist/api/routes/export.routes.js.map +1 -0
  78. package/dist/api/routes/health.routes.d.ts +4 -0
  79. package/dist/api/routes/health.routes.d.ts.map +1 -0
  80. package/dist/api/routes/health.routes.js +11 -0
  81. package/dist/api/routes/health.routes.js.map +1 -0
  82. package/dist/api/routes/index.d.ts +10 -0
  83. package/dist/api/routes/index.d.ts.map +1 -0
  84. package/dist/api/routes/index.js +20 -0
  85. package/dist/api/routes/index.js.map +1 -0
  86. package/dist/api/routes/providers.routes.d.ts +5 -0
  87. package/dist/api/routes/providers.routes.d.ts.map +1 -0
  88. package/dist/api/routes/providers.routes.js +13 -0
  89. package/dist/api/routes/providers.routes.js.map +1 -0
  90. package/dist/api/validators/audit.schemas.d.ts +60 -0
  91. package/dist/api/validators/audit.schemas.d.ts.map +1 -0
  92. package/dist/api/validators/audit.schemas.js +55 -0
  93. package/dist/api/validators/audit.schemas.js.map +1 -0
  94. package/dist/api/validators/auth.schemas.d.ts +17 -0
  95. package/dist/api/validators/auth.schemas.d.ts.map +1 -0
  96. package/dist/api/validators/auth.schemas.js +21 -0
  97. package/dist/api/validators/auth.schemas.js.map +1 -0
  98. package/dist/app.d.ts +3 -0
  99. package/dist/app.d.ts.map +1 -0
  100. package/dist/app.js +62 -0
  101. package/dist/app.js.map +1 -0
  102. package/dist/config/config.schema.d.ts +65 -0
  103. package/dist/config/config.schema.d.ts.map +1 -0
  104. package/dist/config/config.schema.js +95 -0
  105. package/dist/config/config.schema.js.map +1 -0
  106. package/dist/config/index.d.ts +4 -0
  107. package/dist/config/index.d.ts.map +1 -0
  108. package/dist/config/index.js +75 -0
  109. package/dist/config/index.js.map +1 -0
  110. package/dist/container.d.ts +47 -0
  111. package/dist/container.d.ts.map +1 -0
  112. package/dist/container.js +137 -0
  113. package/dist/container.js.map +1 -0
  114. package/dist/data/database.d.ts +13 -0
  115. package/dist/data/database.d.ts.map +1 -0
  116. package/dist/data/database.js +68 -0
  117. package/dist/data/database.js.map +1 -0
  118. package/dist/data/jobs/token-cleanup.job.d.ts +23 -0
  119. package/dist/data/jobs/token-cleanup.job.d.ts.map +1 -0
  120. package/dist/data/jobs/token-cleanup.job.js +96 -0
  121. package/dist/data/jobs/token-cleanup.job.js.map +1 -0
  122. package/dist/data/migrations/migration.runner.d.ts +13 -0
  123. package/dist/data/migrations/migration.runner.d.ts.map +1 -0
  124. package/dist/data/migrations/migration.runner.js +136 -0
  125. package/dist/data/migrations/migration.runner.js.map +1 -0
  126. package/dist/data/models/Token.model.d.ts +30 -0
  127. package/dist/data/models/Token.model.d.ts.map +1 -0
  128. package/dist/data/models/Token.model.js +3 -0
  129. package/dist/data/models/Token.model.js.map +1 -0
  130. package/dist/data/repositories/token.repository.d.ts +16 -0
  131. package/dist/data/repositories/token.repository.d.ts.map +1 -0
  132. package/dist/data/repositories/token.repository.js +97 -0
  133. package/dist/data/repositories/token.repository.js.map +1 -0
  134. package/dist/providers/azure/auth.provider.d.ts +5 -0
  135. package/dist/providers/azure/auth.provider.d.ts.map +1 -0
  136. package/dist/providers/azure/auth.provider.js +13 -0
  137. package/dist/providers/azure/auth.provider.js.map +1 -0
  138. package/dist/providers/azure/azure-errors.d.ts +40 -0
  139. package/dist/providers/azure/azure-errors.d.ts.map +1 -0
  140. package/dist/providers/azure/azure-errors.js +121 -0
  141. package/dist/providers/azure/azure-errors.js.map +1 -0
  142. package/dist/providers/azure/azure-retry.d.ts +41 -0
  143. package/dist/providers/azure/azure-retry.d.ts.map +1 -0
  144. package/dist/providers/azure/azure-retry.js +85 -0
  145. package/dist/providers/azure/azure-retry.js.map +1 -0
  146. package/dist/providers/azure/graph-client.d.ts +26 -0
  147. package/dist/providers/azure/graph-client.d.ts.map +1 -0
  148. package/dist/providers/azure/graph-client.js +146 -0
  149. package/dist/providers/azure/graph-client.js.map +1 -0
  150. package/dist/providers/azure/graph.provider.d.ts +23 -0
  151. package/dist/providers/azure/graph.provider.d.ts.map +1 -0
  152. package/dist/providers/azure/graph.provider.js +161 -0
  153. package/dist/providers/azure/graph.provider.js.map +1 -0
  154. package/dist/providers/azure/queries/app.queries.d.ts +6 -0
  155. package/dist/providers/azure/queries/app.queries.d.ts.map +1 -0
  156. package/dist/providers/azure/queries/app.queries.js +9 -0
  157. package/dist/providers/azure/queries/app.queries.js.map +1 -0
  158. package/dist/providers/azure/queries/policy.queries.d.ts +6 -0
  159. package/dist/providers/azure/queries/policy.queries.d.ts.map +1 -0
  160. package/dist/providers/azure/queries/policy.queries.js +9 -0
  161. package/dist/providers/azure/queries/policy.queries.js.map +1 -0
  162. package/dist/providers/azure/queries/user.queries.d.ts +7 -0
  163. package/dist/providers/azure/queries/user.queries.d.ts.map +1 -0
  164. package/dist/providers/azure/queries/user.queries.js +10 -0
  165. package/dist/providers/azure/queries/user.queries.js.map +1 -0
  166. package/dist/providers/interfaces/IGraphProvider.d.ts +31 -0
  167. package/dist/providers/interfaces/IGraphProvider.d.ts.map +1 -0
  168. package/dist/providers/interfaces/IGraphProvider.js +3 -0
  169. package/dist/providers/interfaces/IGraphProvider.js.map +1 -0
  170. package/dist/providers/interfaces/ILDAPProvider.d.ts +37 -0
  171. package/dist/providers/interfaces/ILDAPProvider.d.ts.map +1 -0
  172. package/dist/providers/interfaces/ILDAPProvider.js +3 -0
  173. package/dist/providers/interfaces/ILDAPProvider.js.map +1 -0
  174. package/dist/providers/ldap/acl-parser.d.ts +8 -0
  175. package/dist/providers/ldap/acl-parser.d.ts.map +1 -0
  176. package/dist/providers/ldap/acl-parser.js +157 -0
  177. package/dist/providers/ldap/acl-parser.js.map +1 -0
  178. package/dist/providers/ldap/ad-mappers.d.ts +8 -0
  179. package/dist/providers/ldap/ad-mappers.d.ts.map +1 -0
  180. package/dist/providers/ldap/ad-mappers.js +162 -0
  181. package/dist/providers/ldap/ad-mappers.js.map +1 -0
  182. package/dist/providers/ldap/ldap-client.d.ts +33 -0
  183. package/dist/providers/ldap/ldap-client.d.ts.map +1 -0
  184. package/dist/providers/ldap/ldap-client.js +195 -0
  185. package/dist/providers/ldap/ldap-client.js.map +1 -0
  186. package/dist/providers/ldap/ldap-errors.d.ts +48 -0
  187. package/dist/providers/ldap/ldap-errors.d.ts.map +1 -0
  188. package/dist/providers/ldap/ldap-errors.js +120 -0
  189. package/dist/providers/ldap/ldap-errors.js.map +1 -0
  190. package/dist/providers/ldap/ldap-retry.d.ts +14 -0
  191. package/dist/providers/ldap/ldap-retry.d.ts.map +1 -0
  192. package/dist/providers/ldap/ldap-retry.js +102 -0
  193. package/dist/providers/ldap/ldap-retry.js.map +1 -0
  194. package/dist/providers/ldap/ldap-sanitizer.d.ts +12 -0
  195. package/dist/providers/ldap/ldap-sanitizer.d.ts.map +1 -0
  196. package/dist/providers/ldap/ldap-sanitizer.js +104 -0
  197. package/dist/providers/ldap/ldap-sanitizer.js.map +1 -0
  198. package/dist/providers/ldap/ldap.provider.d.ts +21 -0
  199. package/dist/providers/ldap/ldap.provider.d.ts.map +1 -0
  200. package/dist/providers/ldap/ldap.provider.js +165 -0
  201. package/dist/providers/ldap/ldap.provider.js.map +1 -0
  202. package/dist/providers/ldap/queries/computer.queries.d.ts +6 -0
  203. package/dist/providers/ldap/queries/computer.queries.d.ts.map +1 -0
  204. package/dist/providers/ldap/queries/computer.queries.js +9 -0
  205. package/dist/providers/ldap/queries/computer.queries.js.map +1 -0
  206. package/dist/providers/ldap/queries/group.queries.d.ts +6 -0
  207. package/dist/providers/ldap/queries/group.queries.d.ts.map +1 -0
  208. package/dist/providers/ldap/queries/group.queries.js +9 -0
  209. package/dist/providers/ldap/queries/group.queries.js.map +1 -0
  210. package/dist/providers/ldap/queries/user.queries.d.ts +7 -0
  211. package/dist/providers/ldap/queries/user.queries.d.ts.map +1 -0
  212. package/dist/providers/ldap/queries/user.queries.js +10 -0
  213. package/dist/providers/ldap/queries/user.queries.js.map +1 -0
  214. package/dist/providers/smb/smb.provider.d.ts +68 -0
  215. package/dist/providers/smb/smb.provider.d.ts.map +1 -0
  216. package/dist/providers/smb/smb.provider.js +382 -0
  217. package/dist/providers/smb/smb.provider.js.map +1 -0
  218. package/dist/server.d.ts +2 -0
  219. package/dist/server.d.ts.map +1 -0
  220. package/dist/server.js +44 -0
  221. package/dist/server.js.map +1 -0
  222. package/dist/services/audit/ad-audit.service.d.ts +70 -0
  223. package/dist/services/audit/ad-audit.service.d.ts.map +1 -0
  224. package/dist/services/audit/ad-audit.service.js +1019 -0
  225. package/dist/services/audit/ad-audit.service.js.map +1 -0
  226. package/dist/services/audit/attack-graph.service.d.ts +62 -0
  227. package/dist/services/audit/attack-graph.service.d.ts.map +1 -0
  228. package/dist/services/audit/attack-graph.service.js +702 -0
  229. package/dist/services/audit/attack-graph.service.js.map +1 -0
  230. package/dist/services/audit/audit.service.d.ts +4 -0
  231. package/dist/services/audit/audit.service.d.ts.map +1 -0
  232. package/dist/services/audit/audit.service.js +10 -0
  233. package/dist/services/audit/audit.service.js.map +1 -0
  234. package/dist/services/audit/azure-audit.service.d.ts +37 -0
  235. package/dist/services/audit/azure-audit.service.d.ts.map +1 -0
  236. package/dist/services/audit/azure-audit.service.js +153 -0
  237. package/dist/services/audit/azure-audit.service.js.map +1 -0
  238. package/dist/services/audit/detectors/ad/accounts.detector.d.ts +37 -0
  239. package/dist/services/audit/detectors/ad/accounts.detector.d.ts.map +1 -0
  240. package/dist/services/audit/detectors/ad/accounts.detector.js +881 -0
  241. package/dist/services/audit/detectors/ad/accounts.detector.js.map +1 -0
  242. package/dist/services/audit/detectors/ad/adcs.detector.d.ts +21 -0
  243. package/dist/services/audit/detectors/ad/adcs.detector.d.ts.map +1 -0
  244. package/dist/services/audit/detectors/ad/adcs.detector.js +227 -0
  245. package/dist/services/audit/detectors/ad/adcs.detector.js.map +1 -0
  246. package/dist/services/audit/detectors/ad/advanced.detector.d.ts +63 -0
  247. package/dist/services/audit/detectors/ad/advanced.detector.d.ts.map +1 -0
  248. package/dist/services/audit/detectors/ad/advanced.detector.js +867 -0
  249. package/dist/services/audit/detectors/ad/advanced.detector.js.map +1 -0
  250. package/dist/services/audit/detectors/ad/attack-paths.detector.d.ts +16 -0
  251. package/dist/services/audit/detectors/ad/attack-paths.detector.d.ts.map +1 -0
  252. package/dist/services/audit/detectors/ad/attack-paths.detector.js +369 -0
  253. package/dist/services/audit/detectors/ad/attack-paths.detector.js.map +1 -0
  254. package/dist/services/audit/detectors/ad/compliance.detector.d.ts +28 -0
  255. package/dist/services/audit/detectors/ad/compliance.detector.d.ts.map +1 -0
  256. package/dist/services/audit/detectors/ad/compliance.detector.js +896 -0
  257. package/dist/services/audit/detectors/ad/compliance.detector.js.map +1 -0
  258. package/dist/services/audit/detectors/ad/computers.detector.d.ts +30 -0
  259. package/dist/services/audit/detectors/ad/computers.detector.d.ts.map +1 -0
  260. package/dist/services/audit/detectors/ad/computers.detector.js +799 -0
  261. package/dist/services/audit/detectors/ad/computers.detector.js.map +1 -0
  262. package/dist/services/audit/detectors/ad/gpo.detector.d.ts +17 -0
  263. package/dist/services/audit/detectors/ad/gpo.detector.d.ts.map +1 -0
  264. package/dist/services/audit/detectors/ad/gpo.detector.js +257 -0
  265. package/dist/services/audit/detectors/ad/gpo.detector.js.map +1 -0
  266. package/dist/services/audit/detectors/ad/groups.detector.d.ts +19 -0
  267. package/dist/services/audit/detectors/ad/groups.detector.d.ts.map +1 -0
  268. package/dist/services/audit/detectors/ad/groups.detector.js +488 -0
  269. package/dist/services/audit/detectors/ad/groups.detector.js.map +1 -0
  270. package/dist/services/audit/detectors/ad/index.d.ts +15 -0
  271. package/dist/services/audit/detectors/ad/index.d.ts.map +1 -0
  272. package/dist/services/audit/detectors/ad/index.js +51 -0
  273. package/dist/services/audit/detectors/ad/index.js.map +1 -0
  274. package/dist/services/audit/detectors/ad/kerberos.detector.d.ts +17 -0
  275. package/dist/services/audit/detectors/ad/kerberos.detector.d.ts.map +1 -0
  276. package/dist/services/audit/detectors/ad/kerberos.detector.js +293 -0
  277. package/dist/services/audit/detectors/ad/kerberos.detector.js.map +1 -0
  278. package/dist/services/audit/detectors/ad/monitoring.detector.d.ts +23 -0
  279. package/dist/services/audit/detectors/ad/monitoring.detector.d.ts.map +1 -0
  280. package/dist/services/audit/detectors/ad/monitoring.detector.js +328 -0
  281. package/dist/services/audit/detectors/ad/monitoring.detector.js.map +1 -0
  282. package/dist/services/audit/detectors/ad/network.detector.d.ts +39 -0
  283. package/dist/services/audit/detectors/ad/network.detector.d.ts.map +1 -0
  284. package/dist/services/audit/detectors/ad/network.detector.js +257 -0
  285. package/dist/services/audit/detectors/ad/network.detector.js.map +1 -0
  286. package/dist/services/audit/detectors/ad/password.detector.d.ts +14 -0
  287. package/dist/services/audit/detectors/ad/password.detector.d.ts.map +1 -0
  288. package/dist/services/audit/detectors/ad/password.detector.js +235 -0
  289. package/dist/services/audit/detectors/ad/password.detector.js.map +1 -0
  290. package/dist/services/audit/detectors/ad/permissions.detector.d.ts +20 -0
  291. package/dist/services/audit/detectors/ad/permissions.detector.d.ts.map +1 -0
  292. package/dist/services/audit/detectors/ad/permissions.detector.js +392 -0
  293. package/dist/services/audit/detectors/ad/permissions.detector.js.map +1 -0
  294. package/dist/services/audit/detectors/ad/trusts.detector.d.ts +11 -0
  295. package/dist/services/audit/detectors/ad/trusts.detector.d.ts.map +1 -0
  296. package/dist/services/audit/detectors/ad/trusts.detector.js +186 -0
  297. package/dist/services/audit/detectors/ad/trusts.detector.js.map +1 -0
  298. package/dist/services/audit/detectors/azure/app-security.detector.d.ts +11 -0
  299. package/dist/services/audit/detectors/azure/app-security.detector.d.ts.map +1 -0
  300. package/dist/services/audit/detectors/azure/app-security.detector.js +184 -0
  301. package/dist/services/audit/detectors/azure/app-security.detector.js.map +1 -0
  302. package/dist/services/audit/detectors/azure/conditional-access.detector.d.ts +10 -0
  303. package/dist/services/audit/detectors/azure/conditional-access.detector.d.ts.map +1 -0
  304. package/dist/services/audit/detectors/azure/conditional-access.detector.js +130 -0
  305. package/dist/services/audit/detectors/azure/conditional-access.detector.js.map +1 -0
  306. package/dist/services/audit/detectors/azure/privilege-security.detector.d.ts +8 -0
  307. package/dist/services/audit/detectors/azure/privilege-security.detector.d.ts.map +1 -0
  308. package/dist/services/audit/detectors/azure/privilege-security.detector.js +113 -0
  309. package/dist/services/audit/detectors/azure/privilege-security.detector.js.map +1 -0
  310. package/dist/services/audit/detectors/azure/user-security.detector.d.ts +14 -0
  311. package/dist/services/audit/detectors/azure/user-security.detector.d.ts.map +1 -0
  312. package/dist/services/audit/detectors/azure/user-security.detector.js +198 -0
  313. package/dist/services/audit/detectors/azure/user-security.detector.js.map +1 -0
  314. package/dist/services/audit/detectors/index.d.ts +2 -0
  315. package/dist/services/audit/detectors/index.d.ts.map +1 -0
  316. package/dist/services/audit/detectors/index.js +38 -0
  317. package/dist/services/audit/detectors/index.js.map +1 -0
  318. package/dist/services/audit/response-formatter.d.ts +176 -0
  319. package/dist/services/audit/response-formatter.d.ts.map +1 -0
  320. package/dist/services/audit/response-formatter.js +240 -0
  321. package/dist/services/audit/response-formatter.js.map +1 -0
  322. package/dist/services/audit/scoring.service.d.ts +15 -0
  323. package/dist/services/audit/scoring.service.d.ts.map +1 -0
  324. package/dist/services/audit/scoring.service.js +139 -0
  325. package/dist/services/audit/scoring.service.js.map +1 -0
  326. package/dist/services/auth/crypto.service.d.ts +19 -0
  327. package/dist/services/auth/crypto.service.d.ts.map +1 -0
  328. package/dist/services/auth/crypto.service.js +135 -0
  329. package/dist/services/auth/crypto.service.js.map +1 -0
  330. package/dist/services/auth/errors.d.ts +19 -0
  331. package/dist/services/auth/errors.d.ts.map +1 -0
  332. package/dist/services/auth/errors.js +46 -0
  333. package/dist/services/auth/errors.js.map +1 -0
  334. package/dist/services/auth/token.service.d.ts +41 -0
  335. package/dist/services/auth/token.service.d.ts.map +1 -0
  336. package/dist/services/auth/token.service.js +208 -0
  337. package/dist/services/auth/token.service.js.map +1 -0
  338. package/dist/services/config/config.service.d.ts +6 -0
  339. package/dist/services/config/config.service.d.ts.map +1 -0
  340. package/dist/services/config/config.service.js +64 -0
  341. package/dist/services/config/config.service.js.map +1 -0
  342. package/dist/services/export/export.service.d.ts +28 -0
  343. package/dist/services/export/export.service.d.ts.map +1 -0
  344. package/dist/services/export/export.service.js +28 -0
  345. package/dist/services/export/export.service.js.map +1 -0
  346. package/dist/services/export/formatters/csv.formatter.d.ts +8 -0
  347. package/dist/services/export/formatters/csv.formatter.d.ts.map +1 -0
  348. package/dist/services/export/formatters/csv.formatter.js +46 -0
  349. package/dist/services/export/formatters/csv.formatter.js.map +1 -0
  350. package/dist/services/export/formatters/json.formatter.d.ts +40 -0
  351. package/dist/services/export/formatters/json.formatter.d.ts.map +1 -0
  352. package/dist/services/export/formatters/json.formatter.js +58 -0
  353. package/dist/services/export/formatters/json.formatter.js.map +1 -0
  354. package/dist/services/jobs/azure-job-runner.d.ts +38 -0
  355. package/dist/services/jobs/azure-job-runner.d.ts.map +1 -0
  356. package/dist/services/jobs/azure-job-runner.js +199 -0
  357. package/dist/services/jobs/azure-job-runner.js.map +1 -0
  358. package/dist/services/jobs/index.d.ts +4 -0
  359. package/dist/services/jobs/index.d.ts.map +1 -0
  360. package/dist/services/jobs/index.js +20 -0
  361. package/dist/services/jobs/index.js.map +1 -0
  362. package/dist/services/jobs/job-runner.d.ts +64 -0
  363. package/dist/services/jobs/job-runner.d.ts.map +1 -0
  364. package/dist/services/jobs/job-runner.js +952 -0
  365. package/dist/services/jobs/job-runner.js.map +1 -0
  366. package/dist/services/jobs/job-store.d.ts +27 -0
  367. package/dist/services/jobs/job-store.d.ts.map +1 -0
  368. package/dist/services/jobs/job-store.js +261 -0
  369. package/dist/services/jobs/job-store.js.map +1 -0
  370. package/dist/services/jobs/job.types.d.ts +67 -0
  371. package/dist/services/jobs/job.types.d.ts.map +1 -0
  372. package/dist/services/jobs/job.types.js +36 -0
  373. package/dist/services/jobs/job.types.js.map +1 -0
  374. package/dist/types/ad.types.d.ts +74 -0
  375. package/dist/types/ad.types.d.ts.map +1 -0
  376. package/dist/types/ad.types.js +3 -0
  377. package/dist/types/ad.types.js.map +1 -0
  378. package/dist/types/adcs.types.d.ts +58 -0
  379. package/dist/types/adcs.types.d.ts.map +1 -0
  380. package/dist/types/adcs.types.js +38 -0
  381. package/dist/types/adcs.types.js.map +1 -0
  382. package/dist/types/attack-graph.types.d.ts +135 -0
  383. package/dist/types/attack-graph.types.d.ts.map +1 -0
  384. package/dist/types/attack-graph.types.js +58 -0
  385. package/dist/types/attack-graph.types.js.map +1 -0
  386. package/dist/types/audit.types.d.ts +34 -0
  387. package/dist/types/audit.types.d.ts.map +1 -0
  388. package/dist/types/audit.types.js +3 -0
  389. package/dist/types/audit.types.js.map +1 -0
  390. package/dist/types/azure.types.d.ts +61 -0
  391. package/dist/types/azure.types.d.ts.map +1 -0
  392. package/dist/types/azure.types.js +3 -0
  393. package/dist/types/azure.types.js.map +1 -0
  394. package/dist/types/config.types.d.ts +63 -0
  395. package/dist/types/config.types.d.ts.map +1 -0
  396. package/dist/types/config.types.js +3 -0
  397. package/dist/types/config.types.js.map +1 -0
  398. package/dist/types/error.types.d.ts +33 -0
  399. package/dist/types/error.types.d.ts.map +1 -0
  400. package/dist/types/error.types.js +70 -0
  401. package/dist/types/error.types.js.map +1 -0
  402. package/dist/types/finding.types.d.ts +133 -0
  403. package/dist/types/finding.types.d.ts.map +1 -0
  404. package/dist/types/finding.types.js +3 -0
  405. package/dist/types/finding.types.js.map +1 -0
  406. package/dist/types/gpo.types.d.ts +39 -0
  407. package/dist/types/gpo.types.d.ts.map +1 -0
  408. package/dist/types/gpo.types.js +15 -0
  409. package/dist/types/gpo.types.js.map +1 -0
  410. package/dist/types/token.types.d.ts +26 -0
  411. package/dist/types/token.types.d.ts.map +1 -0
  412. package/dist/types/token.types.js +3 -0
  413. package/dist/types/token.types.js.map +1 -0
  414. package/dist/types/trust.types.d.ts +45 -0
  415. package/dist/types/trust.types.d.ts.map +1 -0
  416. package/dist/types/trust.types.js +71 -0
  417. package/dist/types/trust.types.js.map +1 -0
  418. package/dist/utils/entity-converter.d.ts +17 -0
  419. package/dist/utils/entity-converter.d.ts.map +1 -0
  420. package/dist/utils/entity-converter.js +285 -0
  421. package/dist/utils/entity-converter.js.map +1 -0
  422. package/dist/utils/graph.util.d.ts +66 -0
  423. package/dist/utils/graph.util.d.ts.map +1 -0
  424. package/dist/utils/graph.util.js +382 -0
  425. package/dist/utils/graph.util.js.map +1 -0
  426. package/dist/utils/logger.d.ts +7 -0
  427. package/dist/utils/logger.d.ts.map +1 -0
  428. package/dist/utils/logger.js +86 -0
  429. package/dist/utils/logger.js.map +1 -0
  430. package/dist/utils/type-name-normalizer.d.ts +5 -0
  431. package/dist/utils/type-name-normalizer.d.ts.map +1 -0
  432. package/dist/utils/type-name-normalizer.js +218 -0
  433. package/dist/utils/type-name-normalizer.js.map +1 -0
  434. package/docker-compose.yml +26 -0
  435. package/docs/api/README.md +178 -0
  436. package/docs/api/openapi.yaml +1524 -0
  437. package/eslint.config.js +54 -0
  438. package/jest.config.js +38 -0
  439. package/package.json +97 -0
  440. package/scripts/fetch-ad-cert.sh +142 -0
  441. package/src/.gitkeep +0 -0
  442. package/src/api/.gitkeep +0 -0
  443. package/src/api/controllers/.gitkeep +0 -0
  444. package/src/api/controllers/audit.controller.ts +313 -0
  445. package/src/api/controllers/auth.controller.ts +258 -0
  446. package/src/api/controllers/export.controller.ts +153 -0
  447. package/src/api/controllers/health.controller.ts +16 -0
  448. package/src/api/controllers/jobs.controller.ts +187 -0
  449. package/src/api/controllers/providers.controller.ts +165 -0
  450. package/src/api/dto/.gitkeep +0 -0
  451. package/src/api/dto/AuditRequest.dto.ts +8 -0
  452. package/src/api/dto/AuditResponse.dto.ts +19 -0
  453. package/src/api/dto/TokenRequest.dto.ts +8 -0
  454. package/src/api/dto/TokenResponse.dto.ts +14 -0
  455. package/src/api/middlewares/.gitkeep +0 -0
  456. package/src/api/middlewares/authenticate.ts +203 -0
  457. package/src/api/middlewares/errorHandler.ts +54 -0
  458. package/src/api/middlewares/rateLimit.ts +35 -0
  459. package/src/api/middlewares/validate.ts +32 -0
  460. package/src/api/routes/.gitkeep +0 -0
  461. package/src/api/routes/audit.routes.ts +77 -0
  462. package/src/api/routes/auth.routes.ts +71 -0
  463. package/src/api/routes/export.routes.ts +34 -0
  464. package/src/api/routes/health.routes.ts +14 -0
  465. package/src/api/routes/index.ts +40 -0
  466. package/src/api/routes/providers.routes.ts +24 -0
  467. package/src/api/validators/.gitkeep +0 -0
  468. package/src/api/validators/audit.schemas.ts +59 -0
  469. package/src/api/validators/auth.schemas.ts +59 -0
  470. package/src/app.ts +87 -0
  471. package/src/config/.gitkeep +0 -0
  472. package/src/config/config.schema.ts +108 -0
  473. package/src/config/index.ts +82 -0
  474. package/src/container.ts +221 -0
  475. package/src/data/.gitkeep +0 -0
  476. package/src/data/database.ts +78 -0
  477. package/src/data/jobs/token-cleanup.job.ts +166 -0
  478. package/src/data/migrations/.gitkeep +0 -0
  479. package/src/data/migrations/001_initial_schema.sql +47 -0
  480. package/src/data/migrations/migration.runner.ts +125 -0
  481. package/src/data/models/.gitkeep +0 -0
  482. package/src/data/models/Token.model.ts +35 -0
  483. package/src/data/repositories/.gitkeep +0 -0
  484. package/src/data/repositories/token.repository.ts +160 -0
  485. package/src/providers/.gitkeep +0 -0
  486. package/src/providers/azure/.gitkeep +0 -0
  487. package/src/providers/azure/auth.provider.ts +14 -0
  488. package/src/providers/azure/azure-errors.ts +189 -0
  489. package/src/providers/azure/azure-retry.ts +168 -0
  490. package/src/providers/azure/graph-client.ts +315 -0
  491. package/src/providers/azure/graph.provider.ts +294 -0
  492. package/src/providers/azure/queries/app.queries.ts +9 -0
  493. package/src/providers/azure/queries/policy.queries.ts +9 -0
  494. package/src/providers/azure/queries/user.queries.ts +10 -0
  495. package/src/providers/interfaces/.gitkeep +0 -0
  496. package/src/providers/interfaces/IGraphProvider.ts +117 -0
  497. package/src/providers/interfaces/ILDAPProvider.ts +142 -0
  498. package/src/providers/ldap/.gitkeep +0 -0
  499. package/src/providers/ldap/acl-parser.ts +231 -0
  500. package/src/providers/ldap/ad-mappers.ts +280 -0
  501. package/src/providers/ldap/ldap-client.ts +259 -0
  502. package/src/providers/ldap/ldap-errors.ts +188 -0
  503. package/src/providers/ldap/ldap-retry.ts +267 -0
  504. package/src/providers/ldap/ldap-sanitizer.ts +273 -0
  505. package/src/providers/ldap/ldap.provider.ts +293 -0
  506. package/src/providers/ldap/queries/computer.queries.ts +9 -0
  507. package/src/providers/ldap/queries/group.queries.ts +9 -0
  508. package/src/providers/ldap/queries/user.queries.ts +10 -0
  509. package/src/providers/smb/smb.provider.ts +653 -0
  510. package/src/server.ts +60 -0
  511. package/src/services/.gitkeep +0 -0
  512. package/src/services/audit/.gitkeep +0 -0
  513. package/src/services/audit/ad-audit.service.ts +1481 -0
  514. package/src/services/audit/attack-graph.service.ts +1104 -0
  515. package/src/services/audit/audit.service.ts +12 -0
  516. package/src/services/audit/azure-audit.service.ts +286 -0
  517. package/src/services/audit/detectors/ad/accounts.detector.ts +1232 -0
  518. package/src/services/audit/detectors/ad/adcs.detector.ts +449 -0
  519. package/src/services/audit/detectors/ad/advanced.detector.ts +1270 -0
  520. package/src/services/audit/detectors/ad/attack-paths.detector.ts +600 -0
  521. package/src/services/audit/detectors/ad/compliance.detector.ts +1421 -0
  522. package/src/services/audit/detectors/ad/computers.detector.ts +1188 -0
  523. package/src/services/audit/detectors/ad/gpo.detector.ts +485 -0
  524. package/src/services/audit/detectors/ad/groups.detector.ts +685 -0
  525. package/src/services/audit/detectors/ad/index.ts +84 -0
  526. package/src/services/audit/detectors/ad/kerberos.detector.ts +424 -0
  527. package/src/services/audit/detectors/ad/monitoring.detector.ts +501 -0
  528. package/src/services/audit/detectors/ad/network.detector.ts +538 -0
  529. package/src/services/audit/detectors/ad/password.detector.ts +324 -0
  530. package/src/services/audit/detectors/ad/permissions.detector.ts +637 -0
  531. package/src/services/audit/detectors/ad/trusts.detector.ts +315 -0
  532. package/src/services/audit/detectors/azure/app-security.detector.ts +246 -0
  533. package/src/services/audit/detectors/azure/conditional-access.detector.ts +186 -0
  534. package/src/services/audit/detectors/azure/privilege-security.detector.ts +176 -0
  535. package/src/services/audit/detectors/azure/user-security.detector.ts +280 -0
  536. package/src/services/audit/detectors/index.ts +18 -0
  537. package/src/services/audit/response-formatter.ts +604 -0
  538. package/src/services/audit/scoring.service.ts +234 -0
  539. package/src/services/auth/.gitkeep +0 -0
  540. package/src/services/auth/crypto.service.ts +230 -0
  541. package/src/services/auth/errors.ts +47 -0
  542. package/src/services/auth/token.service.ts +420 -0
  543. package/src/services/config/.gitkeep +0 -0
  544. package/src/services/config/config.service.ts +75 -0
  545. package/src/services/export/.gitkeep +0 -0
  546. package/src/services/export/export.service.ts +99 -0
  547. package/src/services/export/formatters/csv.formatter.ts +124 -0
  548. package/src/services/export/formatters/json.formatter.ts +160 -0
  549. package/src/services/jobs/azure-job-runner.ts +312 -0
  550. package/src/services/jobs/index.ts +9 -0
  551. package/src/services/jobs/job-runner.ts +1280 -0
  552. package/src/services/jobs/job-store.ts +384 -0
  553. package/src/services/jobs/job.types.ts +182 -0
  554. package/src/types/.gitkeep +0 -0
  555. package/src/types/ad.types.ts +91 -0
  556. package/src/types/adcs.types.ts +107 -0
  557. package/src/types/attack-graph.types.ts +260 -0
  558. package/src/types/audit.types.ts +42 -0
  559. package/src/types/azure.types.ts +68 -0
  560. package/src/types/config.types.ts +79 -0
  561. package/src/types/error.types.ts +69 -0
  562. package/src/types/finding.types.ts +284 -0
  563. package/src/types/gpo.types.ts +72 -0
  564. package/src/types/smb2.d.ts +73 -0
  565. package/src/types/token.types.ts +32 -0
  566. package/src/types/trust.types.ts +140 -0
  567. package/src/utils/.gitkeep +0 -0
  568. package/src/utils/entity-converter.ts +453 -0
  569. package/src/utils/graph.util.ts +609 -0
  570. package/src/utils/logger.ts +111 -0
  571. package/src/utils/type-name-normalizer.ts +302 -0
  572. package/tests/.gitkeep +0 -0
  573. package/tests/e2e/.gitkeep +0 -0
  574. package/tests/fixtures/.gitkeep +0 -0
  575. package/tests/integration/.gitkeep +0 -0
  576. package/tests/integration/README.md +156 -0
  577. package/tests/integration/ad-audit.integration.test.ts +216 -0
  578. package/tests/integration/api/.gitkeep +0 -0
  579. package/tests/integration/api/endpoints.integration.test.ts +431 -0
  580. package/tests/integration/auth/jwt-authentication.integration.test.ts +358 -0
  581. package/tests/integration/providers/.gitkeep +0 -0
  582. package/tests/integration/providers/azure-basic.integration.test.ts +167 -0
  583. package/tests/integration/providers/ldap-basic.integration.test.ts +152 -0
  584. package/tests/integration/providers/ldap-connectivity.test.ts +44 -0
  585. package/tests/integration/providers/ldap-provider.integration.test.ts +347 -0
  586. package/tests/mocks/.gitkeep +0 -0
  587. package/tests/setup.ts +16 -0
  588. package/tests/unit/.gitkeep +0 -0
  589. package/tests/unit/api/middlewares/authenticate.test.ts +446 -0
  590. package/tests/unit/providers/.gitkeep +0 -0
  591. package/tests/unit/providers/azure/azure-errors.test.ts +193 -0
  592. package/tests/unit/providers/azure/azure-retry.test.ts +254 -0
  593. package/tests/unit/providers/azure/graph-provider.test.ts +313 -0
  594. package/tests/unit/providers/ldap/ad-mappers.test.ts +392 -0
  595. package/tests/unit/providers/ldap/ldap-provider.test.ts +376 -0
  596. package/tests/unit/providers/ldap/ldap-retry.test.ts +377 -0
  597. package/tests/unit/providers/ldap/ldap-sanitizer.test.ts +301 -0
  598. package/tests/unit/sample.test.ts +19 -0
  599. package/tests/unit/services/.gitkeep +0 -0
  600. package/tests/unit/services/audit/detectors/ad/accounts.detector.test.ts +393 -0
  601. package/tests/unit/services/audit/detectors/ad/advanced.detector.test.ts +380 -0
  602. package/tests/unit/services/audit/detectors/ad/computers.detector.test.ts +440 -0
  603. package/tests/unit/services/audit/detectors/ad/groups.detector.test.ts +276 -0
  604. package/tests/unit/services/audit/detectors/ad/kerberos.detector.test.ts +215 -0
  605. package/tests/unit/services/audit/detectors/ad/password.detector.test.ts +226 -0
  606. package/tests/unit/services/audit/detectors/ad/permissions.detector.test.ts +244 -0
  607. package/tests/unit/services/audit/detectors/azure/app-security.detector.test.ts +349 -0
  608. package/tests/unit/services/audit/detectors/azure/conditional-access.detector.test.ts +374 -0
  609. package/tests/unit/services/audit/detectors/azure/privilege-security.detector.test.ts +374 -0
  610. package/tests/unit/services/audit/detectors/azure/user-security.detector.test.ts +297 -0
  611. package/tests/unit/services/auth/crypto.service.test.ts +296 -0
  612. package/tests/unit/services/auth/token.service.test.ts +579 -0
  613. package/tests/unit/services/export/export.service.test.ts +241 -0
  614. package/tests/unit/services/export/formatters/csv.formatter.test.ts +270 -0
  615. package/tests/unit/services/export/formatters/json.formatter.test.ts +258 -0
  616. package/tests/unit/utils/.gitkeep +0 -0
  617. package/tsconfig.json +50 -0
@@ -0,0 +1,107 @@
1
+ /**
2
+ * ADCS (AD Certificate Services) Types
3
+ *
4
+ * Types for certificate templates and CAs used in ESC1-ESC11 vulnerability detection.
5
+ */
6
+
7
+ /**
8
+ * ADCS Certificate Template
9
+ */
10
+ export interface ADCSCertificateTemplate {
11
+ dn: string;
12
+ name: string;
13
+ displayName?: string;
14
+
15
+ // Template OID
16
+ 'msPKI-Cert-Template-OID'?: string;
17
+
18
+ // Flags
19
+ 'msPKI-Certificate-Name-Flag'?: number;
20
+ 'msPKI-Enrollment-Flag'?: number;
21
+ 'msPKI-Private-Key-Flag'?: number;
22
+ 'msPKI-RA-Signature'?: number;
23
+
24
+ // Schema version (1 = legacy, 2+ = newer with security extension support)
25
+ 'msPKI-Template-Schema-Version'?: number;
26
+
27
+ // Extended Key Usage OIDs
28
+ pKIExtendedKeyUsage?: string[];
29
+
30
+ // Security descriptor for ACL analysis
31
+ nTSecurityDescriptor?: Buffer;
32
+
33
+ // cn field (used for matching)
34
+ cn?: string;
35
+ }
36
+
37
+ /**
38
+ * ADCS Certificate Authority
39
+ */
40
+ export interface ADCSCertificateAuthority {
41
+ dn: string;
42
+ name: string;
43
+ dNSHostName: string;
44
+
45
+ // CA configuration
46
+ certificateTemplates?: string[];
47
+ cACertificate?: Buffer;
48
+
49
+ // Security descriptor
50
+ nTSecurityDescriptor?: Buffer;
51
+ }
52
+
53
+ // Certificate Name Flags (msPKI-Certificate-Name-Flag)
54
+ export const CT_FLAG_ENROLLEE_SUPPLIES_SUBJECT = 0x00000001;
55
+ export const CT_FLAG_ENROLLEE_SUPPLIES_SUBJECT_ALT_NAME = 0x00010000;
56
+ export const CT_FLAG_SUBJECT_REQUIRE_DIRECTORY_PATH = 0x80000000;
57
+ export const CT_FLAG_SUBJECT_REQUIRE_COMMON_NAME = 0x40000000;
58
+ export const CT_FLAG_SUBJECT_REQUIRE_EMAIL = 0x20000000;
59
+ export const CT_FLAG_SUBJECT_REQUIRE_DNS_AS_CN = 0x10000000;
60
+ export const CT_FLAG_SUBJECT_ALT_REQUIRE_UPN = 0x02000000;
61
+ export const CT_FLAG_SUBJECT_ALT_REQUIRE_EMAIL = 0x04000000;
62
+ export const CT_FLAG_SUBJECT_ALT_REQUIRE_SPN = 0x00800000;
63
+ export const CT_FLAG_SUBJECT_ALT_REQUIRE_DIRECTORY_GUID = 0x01000000;
64
+ export const CT_FLAG_SUBJECT_ALT_REQUIRE_DNS = 0x08000000;
65
+ export const CT_FLAG_SUBJECT_ALT_REQUIRE_DOMAIN_DNS = 0x00400000;
66
+
67
+ // Enrollment Flags (msPKI-Enrollment-Flag)
68
+ export const CT_FLAG_INCLUDE_SYMMETRIC_ALGORITHMS = 0x00000001;
69
+ export const CT_FLAG_PEND_ALL_REQUESTS = 0x00000002; // Manager approval required
70
+ export const CT_FLAG_PUBLISH_TO_KRA_CONTAINER = 0x00000004;
71
+ export const CT_FLAG_PUBLISH_TO_DS = 0x00000008;
72
+ export const CT_FLAG_AUTO_ENROLLMENT_CHECK_USER_DS_CERTIFICATE = 0x00000010;
73
+ export const CT_FLAG_AUTO_ENROLLMENT = 0x00000020;
74
+ export const CT_FLAG_PREVIOUS_APPROVAL_VALIDATE_REENROLLMENT = 0x00000040;
75
+ export const CT_FLAG_USER_INTERACTION_REQUIRED = 0x00000100;
76
+ export const CT_FLAG_REMOVE_INVALID_CERTIFICATE_FROM_PERSONAL_STORE = 0x00000400;
77
+ export const CT_FLAG_ALLOW_ENROLL_ON_BEHALF_OF = 0x00000800;
78
+ export const CT_FLAG_ADD_OCSP_NOCHECK = 0x00001000;
79
+ export const CT_FLAG_ENABLE_KEY_REUSE_ON_NT_TOKEN_KEYSET_STORAGE_FULL = 0x00002000;
80
+ export const CT_FLAG_NOREVOCATIONINFOINISSUEDCERTS = 0x00004000;
81
+ export const CT_FLAG_INCLUDE_BASIC_CONSTRAINTS_FOR_EE_CERTS = 0x00008000;
82
+ export const CT_FLAG_ALLOW_PREVIOUS_APPROVAL_KEYBASEDRENEWAL_VALIDATE_REENROLLMENT = 0x00010000;
83
+ export const CT_FLAG_ISSUANCE_POLICIES_FROM_REQUEST = 0x00020000;
84
+
85
+ // Common Extended Key Usage OIDs
86
+ export const EKU_CLIENT_AUTH = '1.3.6.1.5.5.7.3.2';
87
+ export const EKU_PKIINIT_CLIENT_AUTH = '1.3.6.1.5.2.3.4';
88
+ export const EKU_SMART_CARD_LOGON = '1.3.6.1.4.1.311.20.2.2';
89
+ export const EKU_ANY_PURPOSE = '2.5.29.37.0';
90
+ export const EKU_CERTIFICATE_REQUEST_AGENT = '1.3.6.1.4.1.311.20.2.1'; // Enrollment Agent
91
+ export const EKU_SERVER_AUTH = '1.3.6.1.5.5.7.3.1';
92
+
93
+ /**
94
+ * ESC vulnerability type enum
95
+ */
96
+ export type ESCVulnerabilityType =
97
+ | 'ESC1'
98
+ | 'ESC2'
99
+ | 'ESC3'
100
+ | 'ESC4'
101
+ | 'ESC5'
102
+ | 'ESC6'
103
+ | 'ESC7'
104
+ | 'ESC8'
105
+ | 'ESC9'
106
+ | 'ESC10'
107
+ | 'ESC11';
@@ -0,0 +1,260 @@
1
+ /**
2
+ * Attack Graph Export Types
3
+ *
4
+ * Types for exporting attack path data in a format suitable
5
+ * for visualization tools like BloodHound or custom graph UIs.
6
+ */
7
+
8
+ /**
9
+ * Node types in the attack graph
10
+ */
11
+ export type AttackNodeType = 'user' | 'group' | 'computer' | 'gpo' | 'ou' | 'domain';
12
+
13
+ /**
14
+ * Risk levels for attack paths
15
+ */
16
+ export type AttackPathRisk = 'critical' | 'high' | 'medium' | 'low';
17
+
18
+ /**
19
+ * Types of attack paths
20
+ */
21
+ export type AttackPathType =
22
+ | 'ACL_ABUSE'
23
+ | 'KERBEROASTING'
24
+ | 'ASREP_ROASTING'
25
+ | 'DELEGATION_ABUSE'
26
+ | 'LATERAL_MOVEMENT'
27
+ | 'CERTIFICATE_ABUSE'
28
+ | 'GROUP_MEMBERSHIP'
29
+ | 'DCSYNC'
30
+ | 'OWNERSHIP_ABUSE';
31
+
32
+ /**
33
+ * Relation types between nodes
34
+ */
35
+ export type AttackRelationType =
36
+ | 'MemberOf'
37
+ | 'GenericAll'
38
+ | 'WriteDacl'
39
+ | 'WriteOwner'
40
+ | 'GenericWrite'
41
+ | 'ForceChangePassword'
42
+ | 'AddMember'
43
+ | 'DCSync'
44
+ | 'AllowedToDelegate'
45
+ | 'AllowedToAct'
46
+ | 'HasSPN'
47
+ | 'NoPreauth'
48
+ | 'Owns'
49
+ | 'AdminTo'
50
+ | 'HasSession'
51
+ | 'CanPSRemote'
52
+ | 'CanRDP'
53
+ | 'ExecuteDCOM'
54
+ | 'SQLAdmin'
55
+ | 'ReadLAPSPassword'
56
+ | 'ReadGMSAPassword'
57
+ | 'Contains'
58
+ | 'GPLink'
59
+ | 'TrustedBy';
60
+
61
+ /**
62
+ * A node in the attack graph
63
+ */
64
+ export interface AttackGraphNode {
65
+ id: string; // SID or unique identifier
66
+ name: string; // sAMAccountName or displayName
67
+ type: AttackNodeType;
68
+ sid?: string;
69
+ dn?: string;
70
+ domain?: string;
71
+ isEnabled?: boolean;
72
+ isPrivileged?: boolean;
73
+ }
74
+
75
+ /**
76
+ * A relation in the attack chain
77
+ */
78
+ export interface AttackGraphRelation {
79
+ relation: AttackRelationType;
80
+ isAbusable: boolean;
81
+ accessMask?: number;
82
+ objectType?: string;
83
+ description?: string;
84
+ }
85
+
86
+ /**
87
+ * Chain element - either a node or a relation
88
+ */
89
+ export type AttackChainElement = AttackGraphNode | AttackGraphRelation;
90
+
91
+ /**
92
+ * Entry point properties for an attack path
93
+ */
94
+ export interface AttackEntryPointProperties {
95
+ hasSPN?: boolean;
96
+ noPreauth?: boolean;
97
+ passwordNotExpire?: boolean;
98
+ unconstrained?: boolean;
99
+ constrained?: boolean;
100
+ rbcd?: boolean;
101
+ adminCount?: boolean;
102
+ enabled?: boolean;
103
+ }
104
+
105
+ /**
106
+ * Entry point for an attack path
107
+ */
108
+ export interface AttackEntryPoint {
109
+ id: string;
110
+ name: string;
111
+ type: AttackNodeType;
112
+ properties: AttackEntryPointProperties;
113
+ }
114
+
115
+ /**
116
+ * A complete attack path
117
+ */
118
+ export interface AttackPath {
119
+ id: string; // path-001, path-002, etc.
120
+ risk: AttackPathRisk;
121
+ type: AttackPathType;
122
+ hops: number;
123
+ description: string;
124
+ chain: AttackChainElement[];
125
+ entryPoint: AttackEntryPoint;
126
+ target: AttackGraphNode;
127
+ mitigation: string;
128
+ }
129
+
130
+ /**
131
+ * Target information
132
+ */
133
+ export interface AttackTarget {
134
+ id: string;
135
+ name: string;
136
+ type: AttackNodeType;
137
+ sid?: string;
138
+ dn?: string;
139
+ reason: string; // Why this is a target (e.g., "Domain Admins", "adminCount=1")
140
+ }
141
+
142
+ /**
143
+ * Statistics for the attack graph
144
+ */
145
+ export interface AttackGraphStats {
146
+ totalPaths: number;
147
+ byRisk: {
148
+ critical: number;
149
+ high: number;
150
+ medium: number;
151
+ low: number;
152
+ };
153
+ byType: Record<AttackPathType, number>;
154
+ averageHops: number;
155
+ shortestPath: number;
156
+ longestPath: number;
157
+ }
158
+
159
+ /**
160
+ * Unique node with path count
161
+ */
162
+ export interface AttackGraphUniqueNode {
163
+ id: string;
164
+ name: string;
165
+ type: AttackNodeType;
166
+ pathCount: number; // Number of paths this node appears in
167
+ sid?: string;
168
+ }
169
+
170
+ /**
171
+ * Complete attack graph export format
172
+ */
173
+ export interface AttackGraphExport {
174
+ version: string;
175
+ generatedAt: string; // ISO 8601 timestamp
176
+ domain: string;
177
+ targets: AttackTarget[];
178
+ paths: AttackPath[];
179
+ stats: AttackGraphStats;
180
+ uniqueNodes: AttackGraphUniqueNode[];
181
+ }
182
+
183
+ /**
184
+ * ACL GUIDs for specific rights
185
+ */
186
+ export const ACL_GUIDS = {
187
+ // Extended rights
188
+ FORCE_CHANGE_PASSWORD: '00299570-246d-11d0-a768-00aa006e0529',
189
+ DS_REPLICATION_GET_CHANGES: '1131f6aa-9c07-11d1-f79f-00c04fc2dcd2',
190
+ DS_REPLICATION_GET_CHANGES_ALL: '1131f6ad-9c07-11d1-f79f-00c04fc2dcd2',
191
+ DS_REPLICATION_GET_CHANGES_IN_FILTERED_SET: '89e95b76-444d-4c62-991a-0facbeda640c',
192
+
193
+ // Property sets
194
+ SELF_MEMBERSHIP: 'bf9679c0-0de6-11d0-a285-00aa003049e2', // Add self to group
195
+
196
+ // Schema objects for LAPS
197
+ LAPS_PASSWORD: 'e91556f8-b3c8-4b66-b3c8-4b0c8ac2c45b',
198
+
199
+ // Certificate enrollment
200
+ CERTIFICATE_ENROLLMENT: '0e10c968-78fb-11d2-90d4-00c04f79dc55',
201
+ CERTIFICATE_AUTOENROLLMENT: 'a05b8cc2-17bc-4802-a710-e7c15ab866a2',
202
+ } as const;
203
+
204
+ /**
205
+ * Access mask bits for ACL analysis
206
+ */
207
+ export const ACCESS_MASK = {
208
+ GENERIC_READ: 0x80000000,
209
+ GENERIC_WRITE: 0x40000000,
210
+ GENERIC_EXECUTE: 0x20000000,
211
+ GENERIC_ALL: 0x10000000,
212
+ MAXIMUM_ALLOWED: 0x02000000,
213
+ ACCESS_SYSTEM_SECURITY: 0x01000000,
214
+ SYNCHRONIZE: 0x00100000,
215
+ WRITE_OWNER: 0x00080000,
216
+ WRITE_DACL: 0x00040000,
217
+ READ_CONTROL: 0x00020000,
218
+ DELETE: 0x00010000,
219
+ WRITE_PROPERTY: 0x00000020,
220
+ READ_PROPERTY: 0x00000010,
221
+ SELF: 0x00000008,
222
+ LIST_OBJECT: 0x00000080,
223
+ DELETE_TREE: 0x00000040,
224
+ CONTROL_ACCESS: 0x00000100, // Extended right
225
+ } as const;
226
+
227
+ /**
228
+ * Well-known privileged SID suffixes (relative to domain SID)
229
+ */
230
+ export const PRIVILEGED_SID_SUFFIXES = {
231
+ DOMAIN_ADMINS: '-512',
232
+ DOMAIN_USERS: '-513',
233
+ DOMAIN_GUESTS: '-514',
234
+ DOMAIN_COMPUTERS: '-515',
235
+ DOMAIN_CONTROLLERS: '-516',
236
+ SCHEMA_ADMINS: '-518',
237
+ ENTERPRISE_ADMINS: '-519',
238
+ GROUP_POLICY_CREATOR_OWNERS: '-520',
239
+ KEY_ADMINS: '-526',
240
+ ENTERPRISE_KEY_ADMINS: '-527',
241
+ ADMINISTRATORS: '-544',
242
+ BACKUP_OPERATORS: '-551',
243
+ ACCOUNT_OPERATORS: '-548',
244
+ SERVER_OPERATORS: '-549',
245
+ PRINT_OPERATORS: '-550',
246
+ } as const;
247
+
248
+ /**
249
+ * Check if a node element in chain
250
+ */
251
+ export function isAttackGraphNode(element: AttackChainElement): element is AttackGraphNode {
252
+ return 'type' in element && 'name' in element && !('relation' in element);
253
+ }
254
+
255
+ /**
256
+ * Check if a relation element in chain
257
+ */
258
+ export function isAttackGraphRelation(element: AttackChainElement): element is AttackGraphRelation {
259
+ return 'relation' in element;
260
+ }
@@ -0,0 +1,42 @@
1
+ import { Finding } from './finding.types';
2
+
3
+ /**
4
+ * Audit Types
5
+ */
6
+
7
+ export type Provider = 'active-directory' | 'azure';
8
+
9
+ export interface AuditOptions {
10
+ includeDetails?: boolean;
11
+ includeComputers?: boolean;
12
+ includeConfig?: boolean;
13
+ }
14
+
15
+ export interface AuditSummary {
16
+ totalFindings: number;
17
+ critical: number;
18
+ high: number;
19
+ medium: number;
20
+ low: number;
21
+ riskScore: number;
22
+ categoryScores?: Record<string, number>;
23
+ }
24
+
25
+ export interface AuditMetadata {
26
+ auditId: string;
27
+ provider: Provider;
28
+ timestamp: string;
29
+ duration: number; // milliseconds
30
+ objectsCounted?: {
31
+ users?: number;
32
+ groups?: number;
33
+ computers?: number;
34
+ policies?: number;
35
+ };
36
+ }
37
+
38
+ export interface AuditResult {
39
+ metadata: AuditMetadata;
40
+ summary: AuditSummary;
41
+ findings: Finding[];
42
+ }
@@ -0,0 +1,68 @@
1
+ /**
2
+ * Azure AD Types
3
+ */
4
+
5
+ export interface AzureUser {
6
+ // Core identity
7
+ id: string;
8
+ userPrincipalName: string;
9
+ displayName?: string;
10
+ mail?: string;
11
+ givenName?: string;
12
+ surname?: string;
13
+
14
+ // Organization
15
+ jobTitle?: string;
16
+ department?: string;
17
+ companyName?: string;
18
+ manager?: { id?: string; displayName?: string } | string;
19
+ officeLocation?: string;
20
+ employeeId?: string;
21
+
22
+ // Dates
23
+ createdDateTime?: string;
24
+ lastSignInDateTime?: string;
25
+ lastPasswordChangeDateTime?: string;
26
+
27
+ // Security
28
+ accountEnabled: boolean;
29
+ userType?: string; // "Member" | "Guest"
30
+ riskLevel?: string;
31
+ riskState?: string;
32
+ isMfaRegistered?: boolean;
33
+ strongAuthenticationMethods?: unknown[];
34
+ assignedLicenses?: Array<{ skuId?: string }>;
35
+ memberOf?: Array<{ id?: string; displayName?: string }> | string[];
36
+ passwordPolicies?: string;
37
+
38
+ // Allow additional attributes
39
+ [key: string]: unknown;
40
+ }
41
+
42
+ export interface AzureGroup {
43
+ id: string;
44
+ displayName: string;
45
+ mailEnabled: boolean;
46
+ securityEnabled: boolean;
47
+ groupTypes?: string[];
48
+ members?: string[];
49
+ [key: string]: unknown;
50
+ }
51
+
52
+ export interface AzureApp {
53
+ id: string;
54
+ appId: string;
55
+ displayName: string;
56
+ createdDateTime?: string;
57
+ signInAudience?: string;
58
+ [key: string]: unknown;
59
+ }
60
+
61
+ export interface AzurePolicy {
62
+ id: string;
63
+ displayName: string;
64
+ state?: string;
65
+ conditions?: unknown;
66
+ grantControls?: unknown;
67
+ [key: string]: unknown;
68
+ }
@@ -0,0 +1,79 @@
1
+ /**
2
+ * Configuration Types
3
+ */
4
+
5
+ export interface ServerConfig {
6
+ port: number;
7
+ nodeEnv: 'development' | 'production' | 'test';
8
+ }
9
+
10
+ export interface JWTConfig {
11
+ privateKeyPath: string;
12
+ publicKeyPath: string;
13
+ tokenExpiry: string;
14
+ tokenMaxUses: number;
15
+ }
16
+
17
+ export interface InfoEndpointsConfig {
18
+ tokenInfoEnabled: boolean;
19
+ providersInfoEnabled: boolean;
20
+ }
21
+
22
+ export interface LDAPConfig {
23
+ url: string;
24
+ bindDN: string;
25
+ bindPassword: string;
26
+ baseDN: string;
27
+ tlsVerify: boolean;
28
+ caCertPath?: string;
29
+ timeout: number;
30
+ skipHostnameVerification?: boolean;
31
+ tlsServername?: string;
32
+ }
33
+
34
+ export interface AzureConfig {
35
+ enabled: boolean;
36
+ tenantId?: string;
37
+ tenantName?: string;
38
+ clientId?: string;
39
+ clientSecret?: string;
40
+ }
41
+
42
+ export interface SMBConfig {
43
+ enabled: boolean;
44
+ /** Username for SMB auth (defaults to LDAP user if not set) */
45
+ username?: string;
46
+ /** Password for SMB auth (defaults to LDAP password if not set) */
47
+ password?: string;
48
+ /** Connection timeout in ms */
49
+ timeout: number;
50
+ }
51
+
52
+ /** Azure config with required credentials (for GraphProvider) */
53
+ export interface AzureProviderConfig {
54
+ tenantId: string;
55
+ clientId: string;
56
+ clientSecret: string;
57
+ }
58
+
59
+ export interface LoggingConfig {
60
+ level: 'error' | 'warn' | 'info' | 'debug';
61
+ format: 'json' | 'simple';
62
+ }
63
+
64
+ export interface DatabaseConfig {
65
+ path: string;
66
+ enableWAL: boolean;
67
+ busyTimeout: number;
68
+ }
69
+
70
+ export interface AppConfig {
71
+ server: ServerConfig;
72
+ infoEndpoints: InfoEndpointsConfig;
73
+ jwt: JWTConfig;
74
+ ldap: LDAPConfig;
75
+ azure: AzureConfig;
76
+ smb: SMBConfig;
77
+ logging: LoggingConfig;
78
+ database: DatabaseConfig;
79
+ }
@@ -0,0 +1,69 @@
1
+ /**
2
+ * Custom Error Classes
3
+ */
4
+
5
+ export class BaseError extends Error {
6
+ constructor(
7
+ message: string,
8
+ public statusCode: number = 500,
9
+ public isOperational: boolean = true
10
+ ) {
11
+ super(message);
12
+ this.name = this.constructor.name;
13
+ Error.captureStackTrace(this, this.constructor);
14
+ }
15
+ }
16
+
17
+ export class AuthenticationError extends BaseError {
18
+ constructor(message = 'Authentication failed') {
19
+ super(message, 401);
20
+ }
21
+ }
22
+
23
+ export class AuthorizationError extends BaseError {
24
+ constructor(message = 'Insufficient permissions') {
25
+ super(message, 403);
26
+ }
27
+ }
28
+
29
+ export class ValidationError extends BaseError {
30
+ constructor(message = 'Validation failed') {
31
+ super(message, 400);
32
+ }
33
+ }
34
+
35
+ export class NotFoundError extends BaseError {
36
+ constructor(message = 'Resource not found') {
37
+ super(message, 404);
38
+ }
39
+ }
40
+
41
+ export class LDAPConnectionError extends BaseError {
42
+ constructor(message = 'LDAP connection failed') {
43
+ super(message, 503);
44
+ }
45
+ }
46
+
47
+ export class GraphAPIError extends BaseError {
48
+ constructor(message = 'Graph API request failed') {
49
+ super(message, 502);
50
+ }
51
+ }
52
+
53
+ export class AuditExecutionError extends BaseError {
54
+ constructor(message = 'Audit execution failed') {
55
+ super(message, 500);
56
+ }
57
+ }
58
+
59
+ export class TokenExpiredError extends BaseError {
60
+ constructor(message = 'Token has expired') {
61
+ super(message, 401);
62
+ }
63
+ }
64
+
65
+ export class RateLimitError extends BaseError {
66
+ constructor(message = 'Rate limit exceeded') {
67
+ super(message, 429);
68
+ }
69
+ }