sandbox-cli 0.2.43__tar.gz → 0.2.44__tar.gz

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 (37) hide show
  1. {sandbox_cli-0.2.43 → sandbox_cli-0.2.44}/PKG-INFO +2 -2
  2. {sandbox_cli-0.2.43 → sandbox_cli-0.2.44}/pyproject.toml +2 -2
  3. {sandbox_cli-0.2.43 → sandbox_cli-0.2.44}/sandbox_cli/cli/scanner/__init__.py +20 -1
  4. {sandbox_cli-0.2.43 → sandbox_cli-0.2.44}/sandbox_cli/utils/scanner/advanced.py +15 -0
  5. {sandbox_cli-0.2.43 → sandbox_cli-0.2.44}/.gitignore +0 -0
  6. {sandbox_cli-0.2.43 → sandbox_cli-0.2.44}/LICENSE +0 -0
  7. {sandbox_cli-0.2.43 → sandbox_cli-0.2.44}/NOTICE +0 -0
  8. {sandbox_cli-0.2.43 → sandbox_cli-0.2.44}/README.md +0 -0
  9. {sandbox_cli-0.2.43 → sandbox_cli-0.2.44}/sandbox_cli/__main__.py +0 -0
  10. {sandbox_cli-0.2.43 → sandbox_cli-0.2.44}/sandbox_cli/cli/__init__.py +0 -0
  11. {sandbox_cli-0.2.43 → sandbox_cli-0.2.44}/sandbox_cli/cli/downloader.py +0 -0
  12. {sandbox_cli-0.2.43 → sandbox_cli-0.2.44}/sandbox_cli/cli/images.py +0 -0
  13. {sandbox_cli-0.2.43 → sandbox_cli-0.2.44}/sandbox_cli/cli/reporter.py +0 -0
  14. {sandbox_cli-0.2.43 → sandbox_cli-0.2.44}/sandbox_cli/cli/rules/__init__.py +0 -0
  15. {sandbox_cli-0.2.43 → sandbox_cli-0.2.44}/sandbox_cli/cli/unpack.py +0 -0
  16. {sandbox_cli-0.2.43 → sandbox_cli-0.2.44}/sandbox_cli/console.py +0 -0
  17. {sandbox_cli-0.2.43 → sandbox_cli-0.2.44}/sandbox_cli/internal/__init__.py +0 -0
  18. {sandbox_cli-0.2.43 → sandbox_cli-0.2.44}/sandbox_cli/internal/config.py +0 -0
  19. {sandbox_cli-0.2.43 → sandbox_cli-0.2.44}/sandbox_cli/internal/helpers.py +0 -0
  20. {sandbox_cli-0.2.43 → sandbox_cli-0.2.44}/sandbox_cli/models/__init__.py +0 -0
  21. {sandbox_cli-0.2.43 → sandbox_cli-0.2.44}/sandbox_cli/models/detections.py +0 -0
  22. {sandbox_cli-0.2.43 → sandbox_cli-0.2.44}/sandbox_cli/models/sandbox_arguments.py +0 -0
  23. {sandbox_cli-0.2.43 → sandbox_cli-0.2.44}/sandbox_cli/utils/__init__.py +0 -0
  24. {sandbox_cli-0.2.43 → sandbox_cli-0.2.44}/sandbox_cli/utils/compiler/__init__.py +0 -0
  25. {sandbox_cli-0.2.43 → sandbox_cli-0.2.44}/sandbox_cli/utils/compiler/abc.py +0 -0
  26. {sandbox_cli-0.2.43 → sandbox_cli-0.2.44}/sandbox_cli/utils/compiler/docker.py +0 -0
  27. {sandbox_cli-0.2.43 → sandbox_cli-0.2.44}/sandbox_cli/utils/compiler/ssh.py +0 -0
  28. {sandbox_cli-0.2.43 → sandbox_cli-0.2.44}/sandbox_cli/utils/downloader/__init__.py +0 -0
  29. {sandbox_cli-0.2.43 → sandbox_cli-0.2.44}/sandbox_cli/utils/extractors.py +0 -0
  30. {sandbox_cli-0.2.43 → sandbox_cli-0.2.44}/sandbox_cli/utils/merge_dll_hooks.py +0 -0
  31. {sandbox_cli-0.2.43 → sandbox_cli-0.2.44}/sandbox_cli/utils/scanner/__init__.py +0 -0
  32. {sandbox_cli-0.2.43 → sandbox_cli-0.2.44}/sandbox_cli/utils/scanner/rescan.py +0 -0
  33. {sandbox_cli-0.2.43 → sandbox_cli-0.2.44}/sandbox_cli/utils/unpack/__init__.py +0 -0
  34. {sandbox_cli-0.2.43 → sandbox_cli-0.2.44}/sandbox_cli/utils/unpack/plugins/__init__.py +0 -0
  35. {sandbox_cli-0.2.43 → sandbox_cli-0.2.44}/sandbox_cli/utils/unpack/plugins/abc.py +0 -0
  36. {sandbox_cli-0.2.43 → sandbox_cli-0.2.44}/sandbox_cli/utils/unpack/plugins/correlation.py +0 -0
  37. {sandbox_cli-0.2.43 → sandbox_cli-0.2.44}/sandbox_cli/utils/unpack/plugins/sort_by_plugins.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: sandbox-cli
3
- Version: 0.2.43
3
+ Version: 0.2.44
4
4
  Summary: Command line tool for interaction with sandboxes
5
5
  Project-URL: Homepage, https://github.com/Security-Experts-Community/sandbox-cli
6
6
  Project-URL: Documentation, https://security-experts-community.github.io/sandbox-cli
@@ -17,7 +17,7 @@ Requires-Dist: colorama>=0.4.6
17
17
  Requires-Dist: cryptography>=46.0.2
18
18
  Requires-Dist: cyclopts>=4.2.5
19
19
  Requires-Dist: docker>=7.1.0
20
- Requires-Dist: ptsandbox>=5.0.6
20
+ Requires-Dist: ptsandbox>=5.0.8
21
21
  Requires-Dist: pyzipper>=0.3.6
22
22
  Requires-Dist: rich>=14.1.0
23
23
  Requires-Dist: zstandard>=0.23.0
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "sandbox-cli"
3
- version = "0.2.43"
3
+ version = "0.2.44"
4
4
  description = "Command line tool for interaction with sandboxes"
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.11"
@@ -14,7 +14,7 @@ dependencies = [
14
14
  "cryptography>=46.0.2",
15
15
  "cyclopts>=4.2.5",
16
16
  "docker>=7.1.0",
17
- "ptsandbox>=5.0.6",
17
+ "ptsandbox>=5.0.8",
18
18
  "pyzipper>=0.3.6",
19
19
  "rich>=14.1.0",
20
20
  "zstandard>=0.23.0",
@@ -494,7 +494,7 @@ async def scan_new(
494
494
  Path | None,
495
495
  Parameter(
496
496
  name=["--syscall-hooks", "-s"],
497
- help="Path to files with syscall hooks (file with syscall names splitted by newline)",
497
+ help="Path to file with syscall hooks (file with syscall names splitted by newline)",
498
498
  group="Sandbox Options",
499
499
  ),
500
500
  ] = None,
@@ -506,6 +506,14 @@ async def scan_new(
506
506
  group="Sandbox Options",
507
507
  ),
508
508
  ] = None,
509
+ unimon_hooks: Annotated[
510
+ Path | None,
511
+ Parameter(
512
+ name=["--unimon-hooks", "-u"],
513
+ help="Path to file with unimon hooks",
514
+ group="Sandbox Options",
515
+ ),
516
+ ] = None,
509
517
  custom_command: Annotated[
510
518
  str | None,
511
519
  Parameter(
@@ -540,6 +548,15 @@ async def scan_new(
540
548
  negative="",
541
549
  ),
542
550
  ] = False,
551
+ disable_lightweight_dumps: Annotated[
552
+ bool,
553
+ Parameter(
554
+ name=["--disable-lightweight-dumps", "-dl"],
555
+ help="Disable lightweight memory dumps (mostly for testing purposes)",
556
+ group="Sandbox Options",
557
+ negative="",
558
+ ),
559
+ ] = False,
543
560
  bootkitmon: Annotated[
544
561
  bool,
545
562
  Parameter(
@@ -729,12 +746,14 @@ async def scan_new(
729
746
  is_local=is_local,
730
747
  analysis_duration=analysis_duration,
731
748
  syscall_hooks=syscall_hooks,
749
+ unimon_hooks=unimon_hooks,
732
750
  custom_command=custom_command,
733
751
  dll_hooks_dir=dll_hooks_dir,
734
752
  fake_name=fake_name,
735
753
  unpack=unpack,
736
754
  priority=priority,
737
755
  no_procdumps_on_finish=no_procdumps_on_finish,
756
+ disable_lightweight_dumps=disable_lightweight_dumps,
738
757
  bootkitmon=bootkitmon,
739
758
  bootkitmon_duration=bootkitmon_duration,
740
759
  mitm_disabled=mitm_disabled,
@@ -91,9 +91,11 @@ async def _prepare_sandbox_new_scan(
91
91
  is_local: bool,
92
92
  analysis_duration: int,
93
93
  syscall_hooks: Path | None,
94
+ unimon_hooks: Path | None,
94
95
  dll_hooks_dir: Path | None,
95
96
  custom_command: str | None,
96
97
  no_procdumps_on_finish: bool,
98
+ disable_lightweight_dumps: bool,
97
99
  bootkitmon: bool,
98
100
  bootkitmon_duration: int,
99
101
  mitm_disabled: bool,
@@ -155,6 +157,8 @@ async def _prepare_sandbox_new_scan(
155
157
  # all debug options available in library
156
158
  sandbox_options.debug_options["save_debug_files"] = True
157
159
  sandbox_options.debug_options["extract_crashdumps"] = True
160
+ # by default we want to use lightweight memory dumps
161
+ sandbox_options.debug_options["procdump_lightweight_mode"] = not disable_lightweight_dumps
158
162
 
159
163
  # process custom options
160
164
  compiled_rules = await _get_compiled_rules(rules_dir=rules_dir, is_local=is_local, progress=progress)
@@ -170,6 +174,13 @@ async def _prepare_sandbox_new_scan(
170
174
  syscall_hooks_uri = (await sandbox.api.upload_file(data)).data.file_uri
171
175
  sandbox_options.debug_options["custom_syscall_hooks"] = syscall_hooks_uri
172
176
 
177
+ if unimon_hooks:
178
+ progress.console.print(f"{console.INFO} Upload unimon hooks: {unimon_hooks}")
179
+ async with aiofiles.open(unimon_hooks, mode="rb") as fd:
180
+ data = await fd.read()
181
+ unimon_hooks_uri = (await sandbox.api.upload_file(data)).data.file_uri
182
+ sandbox_options.debug_options["custom_unimon_hooks"] = unimon_hooks_uri
183
+
173
184
  if dll_hooks_dir:
174
185
  progress.console.print(f"{console.INFO} Upload dll hooks: {dll_hooks_dir}")
175
186
  data = merge_dll_hooks(Path(dll_hooks_dir))
@@ -205,12 +216,14 @@ async def scan_internal_advanced(
205
216
  is_local: bool,
206
217
  analysis_duration: int,
207
218
  syscall_hooks: Path | None,
219
+ unimon_hooks: Path | None,
208
220
  dll_hooks_dir: Path | None,
209
221
  custom_command: str | None,
210
222
  fake_name: str | None,
211
223
  unpack: bool,
212
224
  priority: int,
213
225
  no_procdumps_on_finish: bool,
226
+ disable_lightweight_dumps: bool,
214
227
  bootkitmon: bool,
215
228
  bootkitmon_duration: int,
216
229
  mitm_disabled: bool,
@@ -383,9 +396,11 @@ async def scan_internal_advanced(
383
396
  is_local,
384
397
  analysis_duration,
385
398
  syscall_hooks,
399
+ unimon_hooks,
386
400
  dll_hooks_dir,
387
401
  custom_command,
388
402
  no_procdumps_on_finish,
403
+ disable_lightweight_dumps,
389
404
  bootkitmon,
390
405
  bootkitmon_duration,
391
406
  mitm_disabled,
File without changes
File without changes
File without changes
File without changes