From 8d0add404ef34c3b1d6b3a6744917585972e4f0a Mon Sep 17 00:00:00 2001 From: Dom Whewell Date: Mon, 14 Oct 2024 19:02:21 +0100 Subject: [PATCH 1/2] added new module --- bbot/modules/apkpure.py | 53 +++++++++++++++ .../module_tests/test_module_apkpure.py | 68 +++++++++++++++++++ 2 files changed, 121 insertions(+) create mode 100644 bbot/modules/apkpure.py create mode 100644 bbot/test/test_step_2/module_tests/test_module_apkpure.py diff --git a/bbot/modules/apkpure.py b/bbot/modules/apkpure.py new file mode 100644 index 000000000..210dfef0e --- /dev/null +++ b/bbot/modules/apkpure.py @@ -0,0 +1,53 @@ +from pathlib import Path +from bbot.modules.base import BaseModule + + +class apkpure(BaseModule): + watched_events = ["MOBILE_APP"] + produced_events = ["FILESYSTEM"] + flags = ["passive", "safe", "code-enum"] + meta = { + "description": "Download android applications from apkpure.com", + "created_date": "2024-10-11", + "author": "@domwhewell-sage", + } + options = {"output_folder": ""} + options_desc = {"output_folder": "Folder to download apk's to"} + + async def setup(self): + output_folder = self.config.get("output_folder") + if output_folder: + self.output_dir = Path(output_folder) / "apk_files" + else: + self.output_dir = self.scan.home / "apk_files" + self.helpers.mkdir(self.output_dir) + return await super().setup() + + async def filter_event(self, event): + if event.type == "MOBILE_APP": + if "android" not in event.tags: + return False, "event is not an android app" + return True + + async def handle_event(self, event): + app_id = event.data.get("id", "") + path = await self.download_apk(app_id) + if path: + await self.emit_event( + {"path": str(path)}, + "FILESYSTEM", + tags=["apk", "file"], + parent=event, + context=f'{{module}} downloaded the apk "{app_id}" to: {path}', + ) + + async def download_apk(self, app_id): + path = None + url = f"https://d.apkpure.com/b/XAPK/{app_id}?version=latest" + self.helpers.mkdir(self.output_dir / app_id) + file_destination = self.output_dir / app_id / f"{app_id}.xapk" + result = await self.helpers.download(url, warn=False, filename=file_destination) + if result: + self.info(f'Downloaded "{app_id}" from "{url}", saved to {file_destination}') + path = file_destination + return path diff --git a/bbot/test/test_step_2/module_tests/test_module_apkpure.py b/bbot/test/test_step_2/module_tests/test_module_apkpure.py new file mode 100644 index 000000000..59a32a66f --- /dev/null +++ b/bbot/test/test_step_2/module_tests/test_module_apkpure.py @@ -0,0 +1,68 @@ +from pathlib import Path +from .base import ModuleTestBase + + +class TestAPKPure(ModuleTestBase): + modules_overrides = ["apkpure", "google_playstore", "speculate"] + + async def setup_after_prep(self, module_test): + await module_test.mock_dns({"blacklanternsecurity.com": {"A": ["127.0.0.99"]}}) + module_test.httpx_mock.add_response( + url="https://play.google.com/store/search?q=blacklanternsecurity&c=apps", + text=""" + + + "blacklanternsecurity" - Android Apps on Google Play + + + + + """, + ) + module_test.httpx_mock.add_response( + url="https://play.google.com/store/apps/details?id=com.bbot.test", + text=""" + + + BBOT + + + + + + + """, + ) + module_test.httpx_mock.add_response( + url="https://d.apkpure.com/b/XAPK/com.bbot.test?version=latest", + text="apk", + ) + + def check(self, module_test, events): + assert len(events) == 6 + assert 1 == len( + [ + e + for e in events + if e.type == "DNS_NAME" and e.data == "blacklanternsecurity.com" and e.scope_distance == 0 + ] + ), "Failed to emit target DNS_NAME" + assert 1 == len( + [e for e in events if e.type == "ORG_STUB" and e.data == "blacklanternsecurity" and e.scope_distance == 0] + ), "Failed to find ORG_STUB" + assert 1 == len( + [ + e + for e in events + if e.type == "MOBILE_APP" + and "android" in e.tags + and e.data["id"] == "com.bbot.test" + and e.data["url"] == "https://play.google.com/store/apps/details?id=com.bbot.test" + ] + ), "Failed to find bbot android app" + filesystem_event = [ + e for e in events if e.type == "FILESYSTEM" and "com.bbot.test.xapk" in e.data["path"] and "apk" in e.tags + ] + assert 1 == len(filesystem_event), "Failed to download apk" + file = Path(filesystem_event[0].data["path"]) + assert file.is_file(), "Destination xapk doesn't exist" From cb21aebfbd3077ca230113a548fbcc0d8446696e Mon Sep 17 00:00:00 2001 From: Dom Whewell Date: Tue, 15 Oct 2024 18:10:33 +0100 Subject: [PATCH 2/2] Added a mock apk file to the test --- bbot/test/bbot_fixtures.py | 7 +++++++ bbot/test/owasp_mastg.apk | Bin 0 -> 66651 bytes .../module_tests/test_module_apkpure.py | 5 +++-- 3 files changed, 10 insertions(+), 2 deletions(-) create mode 100644 bbot/test/owasp_mastg.apk diff --git a/bbot/test/bbot_fixtures.py b/bbot/test/bbot_fixtures.py index abad144d1..0b2a0ec57 100644 --- a/bbot/test/bbot_fixtures.py +++ b/bbot/test/bbot_fixtures.py @@ -42,6 +42,13 @@ def tempwordlist(content): return filename +def tempapkfile(): + current_dir = Path(__file__).parent + with open(current_dir / "owasp_mastg.apk", "rb") as f: + apk_file = f.read() + return apk_file + + @pytest.fixture def clean_default_config(monkeypatch): clean_config = OmegaConf.merge( diff --git a/bbot/test/owasp_mastg.apk b/bbot/test/owasp_mastg.apk new file mode 100644 index 0000000000000000000000000000000000000000..9a4f638f1c4a5296fb4eace04b328aecce659b79 GIT binary patch literal 66651 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 literal 0 HcmV?d00001 diff --git a/bbot/test/test_step_2/module_tests/test_module_apkpure.py b/bbot/test/test_step_2/module_tests/test_module_apkpure.py index 59a32a66f..17b8e0685 100644 --- a/bbot/test/test_step_2/module_tests/test_module_apkpure.py +++ b/bbot/test/test_step_2/module_tests/test_module_apkpure.py @@ -1,9 +1,10 @@ from pathlib import Path -from .base import ModuleTestBase +from .base import ModuleTestBase, tempapkfile class TestAPKPure(ModuleTestBase): modules_overrides = ["apkpure", "google_playstore", "speculate"] + apk_file = tempapkfile() async def setup_after_prep(self, module_test): await module_test.mock_dns({"blacklanternsecurity.com": {"A": ["127.0.0.99"]}}) @@ -35,7 +36,7 @@ async def setup_after_prep(self, module_test): ) module_test.httpx_mock.add_response( url="https://d.apkpure.com/b/XAPK/com.bbot.test?version=latest", - text="apk", + content=self.apk_file, ) def check(self, module_test, events):