diff --git a/src/generic-methodologies-and-resources/pentesting-wifi/enable-nexmon-monitor-and-injection-on-android.md b/src/generic-methodologies-and-resources/pentesting-wifi/enable-nexmon-monitor-and-injection-on-android.md index ad0637a2f..0e9df1fc0 100644 --- a/src/generic-methodologies-and-resources/pentesting-wifi/enable-nexmon-monitor-and-injection-on-android.md +++ b/src/generic-methodologies-and-resources/pentesting-wifi/enable-nexmon-monitor-and-injection-on-android.md @@ -3,13 +3,13 @@ {{#include ../../banners/hacktricks-training.md}} ## 개요 -대부분의 최신 Android 전화는 802.11 모니터 모드나 프레임 주입 기능 없이 출하되는 Broadcom/Cypress Wi-Fi 칩셋을 내장하고 있습니다. 오픈 소스 NexMon 프레임워크는 이러한 기능을 추가하기 위해 독점 펌웨어를 패치하고 이를 공유 라이브러리(`libnexmon.so`)와 CLI 도우미(`nexutil`)를 통해 노출합니다. 이 라이브러리를 기본 Wi-Fi 드라이버에 미리 로드함으로써, 루팅된 장치는 원시 802.11 트래픽을 캡처하고 임의의 프레임을 주입할 수 있어 외부 USB 어댑터의 필요성을 없앱니다. +대부분의 최신 Android 전화는 802.11 모니터 모드나 프레임 주입 기능 없이 출하되는 Broadcom/Cypress Wi-Fi 칩셋을 내장하고 있습니다. 오픈 소스 NexMon 프레임워크는 이러한 기능을 추가하기 위해 독점 펌웨어를 패치하고 이를 공유 라이브러리(`libnexmon.so`)와 CLI 도우미(`nexutil`)를 통해 노출합니다. 이 라이브러리를 기본 Wi-Fi 드라이버에 미리 로드함으로써, 루팅된 장치는 원시 802.11 트래픽을 캡처하고 임의의 프레임을 주입할 수 있습니다 – 외부 USB 어댑터가 필요하지 않습니다. 이 페이지는 완전히 패치된 삼성 갤럭시 S10 (BCM4375B1)을 예로 들어 빠른 워크플로우를 문서화합니다. 사용되는 항목은 다음과 같습니다: * 패치된 펌웨어 + `libnexmon.so`를 포함하는 NexMon Magisk 모듈 * 모니터 모드 전환을 자동화하는 Hijacker Android 애플리케이션 -* 내부 인터페이스에 대해 클래식 무선 도구(aircrack-ng, wifite, mdk4 등)를 직접 실행하기 위한 선택적 Kali NetHunter chroot +* 내부 인터페이스에 대해 클래식 무선 도구(aircrack-ng, wifite, mdk4 …)를 직접 실행하기 위한 선택적 Kali NetHunter chroot 같은 기술은 공개적으로 사용 가능한 NexMon 패치가 있는 모든 핸드셋(픽셀 1, 넥서스 6P, 갤럭시 S7/S8 등)에 적용됩니다. @@ -23,7 +23,7 @@ * `/system/lib*/libnexmon.so` * `/system/xbin/nexutil` * Hijacker ≥ 1.7 (arm/arm64) – [https://github.com/chrisk44/Hijacker](https://github.com/chrisk44/Hijacker) -* (선택 사항) Kali NetHunter 또는 무선 도구를 실행할 Linux chroot +* (선택 사항) 무선 도구를 실행할 Linux chroot인 Kali NetHunter 또는 기타 --- @@ -77,14 +77,14 @@ svc wifi disable && ifconfig wlan0 up && nexutil -s0x613 -i -v2 # Disable and return to normal Wi-Fi nexutil -m0 && svc wifi enable ``` -If you only need passive sniffing, omit the `-s0x613` flag. +만약 수동 스니핑만 필요하다면 `-s0x613` 플래그를 생략하세요. --- -## Using `libnexmon` inside Kali NetHunter / chroot +## Kali NetHunter / chroot 내에서 `libnexmon` 사용하기 Kali의 기본 사용자 공간 도구는 NexMon을 인식하지 않지만, `LD_PRELOAD`를 통해 강제로 사용할 수 있습니다: -1. 미리 빌드된 공유 객체를 chroot에 복사합니다: +1. 미리 빌드된 공유 객체를 chroot로 복사합니다: ```bash cp /sdcard/Download/kalilibnexmon.so /lib/ ``` @@ -97,32 +97,32 @@ wifite -i wlan0 # 또는 aircrack-ng, mdk4 … ``` 4. 완료되면 Android에서 일반적으로 모니터 모드를 비활성화합니다. -펌웨어가 이미 radiotap 주입을 처리하므로, 사용자 공간 도구는 외부 Atheros 어댑터와 동일하게 작동합니다. +펌웨어가 이미 radiotap 주입을 처리하기 때문에, 사용자 공간 도구는 외부 Atheros 어댑터와 동일하게 작동합니다. --- -## Typical Attacks Possible +## 가능한 일반적인 공격 모니터 + TX가 활성화되면 다음을 수행할 수 있습니다: * `wifite`, `hcxdumptool`, `airodump-ng`로 WPA(2/3-SAE) 핸드쉐이크 또는 PMKID 캡처. * 클라이언트가 재연결하도록 강제하기 위해 비인증/비연결 프레임 주입. * `mdk4`, `aireplay-ng`, Scapy 등을 사용하여 임의의 관리/데이터 프레임 생성. * 휴대폰에서 직접 악성 AP를 구축하거나 KARMA/MANA 공격 수행. -Galaxy S10의 성능은 외부 USB NIC와 유사합니다 (~20 dBm TX, 2-3 M pps RX). +Galaxy S10의 성능은 외부 USB NIC와 비슷합니다 (~20 dBm TX, 2-3 M pps RX). --- -## Troubleshooting -* `Device or resource busy` – 모니터 모드를 활성화하기 전에 **Android Wi-Fi 서비스가 비활성화되어 있는지** 확인합니다 (`svc wifi disable`). -* `nexutil: ioctl(PRIV_MAGIC) failed` – 라이브러리가 미리 로드되지 않았습니다; `LD_PRELOAD` 경로를 다시 확인합니다. -* 프레임 주입은 작동하지만 패킷이 캡처되지 않음 – 일부 ROM은 채널을 하드 블록합니다; `nexutil -c ` 또는 `iwconfig wlan0 channel `을 시도합니다. -* SELinux가 라이브러리를 차단함 – 장치를 *Permissive*로 설정하거나 모듈 컨텍스트를 수정합니다: `chcon u:object_r:system_lib_file:s0 libnexmon.so`. +## 문제 해결 +* `Device or resource busy` – 모니터 모드를 활성화하기 전에 **Android Wi-Fi 서비스가 비활성화되어 있는지** 확인하세요 (`svc wifi disable`). +* `nexutil: ioctl(PRIV_MAGIC) failed` – 라이브러리가 미리 로드되지 않았습니다; `LD_PRELOAD` 경로를 다시 확인하세요. +* 프레임 주입은 작동하지만 패킷이 캡처되지 않음 – 일부 ROM은 채널을 하드 블록합니다; `nexutil -c ` 또는 `iwconfig wlan0 channel `을 시도하세요. +* SELinux가 라이브러리를 차단함 – 장치를 *Permissive*로 설정하거나 모듈 컨텍스트를 수정하세요: `chcon u:object_r:system_lib_file:s0 libnexmon.so`. --- -## References -* [Hijacker on the Samsung Galaxy S10 with wireless injection](https://forums.kali.org/t/hijacker-on-the-samsung-galaxy-s10-with-wireless-injection/10305) -* [NexMon – firmware patching framework](https://github.com/seemoo-lab/nexmon) -* [Hijacker (aircrack-ng GUI for Android)](https://github.com/chrisk44/Hijacker) +## 참고 문헌 +* [Samsung Galaxy S10에서 무선 주입을 위한 Hijacker](https://forums.kali.org/t/hijacker-on-the-samsung-galaxy-s10-with-wireless-injection/10305) +* [NexMon – 펌웨어 패칭 프레임워크](https://github.com/seemoo-lab/nexmon) +* [Hijacker (Android용 aircrack-ng GUI)](https://github.com/chrisk44/Hijacker) {{#include ../../banners/hacktricks-training.md}} diff --git a/src/images/discount.jpeg b/src/images/discount.jpeg new file mode 100644 index 000000000..5c0b098d4 Binary files /dev/null and b/src/images/discount.jpeg differ diff --git a/src/mobile-pentesting/android-app-pentesting/README.md b/src/mobile-pentesting/android-app-pentesting/README.md index a7d9d9a6c..20efd0ab0 100644 --- a/src/mobile-pentesting/android-app-pentesting/README.md +++ b/src/mobile-pentesting/android-app-pentesting/README.md @@ -13,19 +13,19 @@ android-applications-basics.md ## ADB (Android Debug Bridge) 이것은 안드로이드 장치(에뮬레이트된 또는 물리적)에 연결하는 데 필요한 주요 도구입니다.\ -**ADB**는 컴퓨터에서 **USB** 또는 **네트워크**를 통해 장치를 제어할 수 있게 해줍니다. 이 유틸리티는 **파일 복사**, **앱 설치 및 제거**, **셸 명령 실행**, **데이터 백업**, **로그 읽기** 등 여러 기능을 가능하게 합니다. +**ADB**는 컴퓨터에서 **USB** 또는 **네트워크**를 통해 장치를 제어할 수 있게 해줍니다. 이 유틸리티는 **파일 복사**, **앱 설치 및 제거**, **셸 명령 실행**, **데이터 백업**, **로그 읽기** 등 여러 기능을 지원합니다. -ADB 사용 방법을 배우기 위해 다음 [**ADB Commands**](adb-commands.md) 목록을 확인하세요. +다음 목록의 [**ADB Commands**](adb-commands.md)를 확인하여 adb 사용 방법을 배워보세요. ## Smali -때때로 **숨겨진 정보**(잘 난독화된 비밀번호나 플래그일 수 있음)에 접근하기 위해 **애플리케이션 코드를 수정하는 것**이 흥미로울 수 있습니다. 그러므로 apk를 디컴파일하고 코드를 수정한 후 다시 컴파일하는 것이 흥미로울 수 있습니다.\ +때때로 **숨겨진 정보**(잘 난독화된 비밀번호나 플래그 등)에 접근하기 위해 **애플리케이션 코드를 수정하는 것**이 흥미로울 수 있습니다. 따라서 apk를 디컴파일하고 코드를 수정한 후 다시 컴파일하는 것이 유용할 수 있습니다.\ [**이 튜토리얼에서는 APK를 디컴파일하고, Smali 코드를 수정하고, 새로운 기능으로 APK를 다시 컴파일하는 방법을 배울 수 있습니다**](smali-changes.md). 이는 **동적 분석 중 여러 테스트의 대안으로 매우 유용할 수 있습니다**. 그러므로 **이 가능성을 항상 염두에 두세요**. ## Other interesting tricks - [Play Store에서 위치 스푸핑하기](spoofing-your-location-in-play-store.md) -- [Shizuku Privileged API (ADB 기반 비루트 권한 접근)](shizuku-privileged-api.md) +- [Shizuku Privileged API (ADB 기반 비루트 특권 접근)](shizuku-privileged-api.md) - **APK 다운로드**: [https://apps.evozi.com/apk-downloader/](https://apps.evozi.com/apk-downloader/), [https://apkpure.com/es/](https://apkpure.com/es/), [https://www.apkmirror.com/](https://www.apkmirror.com), [https://apkcombo.com/es-es/apk-downloader/](https://apkcombo.com/es-es/apk-downloader/), [https://github.com/kiber-io/apkd](https://github.com/kiber-io/apkd) - Extract APK from device: ```bash @@ -48,8 +48,8 @@ java -jar uber-apk-signer.jar -a merged.apk --allowResign -o merged_signed ``` ## 정적 분석 -우선, APK를 분석하기 위해서는 **디컴파일러를 사용하여 Java 코드를 살펴봐야 합니다**.\ -자세한 정보는 [**여기에서 다양한 디컴파일러에 대한 정보를 확인하세요**](apk-decompilers.md). +우선, APK를 분석하기 위해서는 **디컴파일러를 사용하여 Java 코드를 살펴봐야 합니다.**\ +자세한 정보는 [**여기에서 다양한 디컴파일러에 대한 정보를 확인하세요.**](apk-decompilers.md). ### 흥미로운 정보 찾기 @@ -57,18 +57,18 @@ APK의 **문자열**을 살펴보면 **비밀번호**, **URL** ([https://github. **Firebase** -**firebase URL**에 특별한 주의를 기울이고 잘못 구성되어 있는지 확인하세요. [Firebase가 무엇인지 및 이를 악용하는 방법에 대한 더 많은 정보는 여기에서 확인하세요.](../../network-services-pentesting/pentesting-web/buckets/firebase-database.md) +**Firebase URL**에 특별한 주의를 기울이고 잘못 구성되어 있는지 확인하세요. [Firebase가 무엇인지 및 이를 악용하는 방법에 대한 자세한 정보는 여기에서 확인하세요.](../../network-services-pentesting/pentesting-web/buckets/firebase-database.md) ### 애플리케이션에 대한 기본 이해 - Manifest.xml, strings.xml -**애플리케이션의 _Manifest.xml_ 및 **_strings.xml_** 파일을 검사하면 잠재적인 보안 취약점을 발견할 수 있습니다**. 이러한 파일은 디컴파일러를 사용하거나 APK 파일 확장자를 .zip으로 변경한 후 압축을 풀어 접근할 수 있습니다. +**애플리케이션의 _Manifest.xml_ 및 **_strings.xml_** 파일을 검사하면 잠재적인 보안 취약점을 발견할 수 있습니다.** 이 파일들은 디컴파일러를 사용하거나 APK 파일 확장자를 .zip으로 변경한 후 압축을 풀어 접근할 수 있습니다. **Manifest.xml**에서 식별된 **취약점**은 다음과 같습니다: - **디버깅 가능한 애플리케이션**: _Manifest.xml_ 파일에서 디버깅 가능(`debuggable="true"`)으로 설정된 애플리케이션은 연결을 허용하여 악용될 위험이 있습니다. 디버깅 가능한 애플리케이션을 찾고 악용하는 방법에 대한 튜토리얼을 참조하세요. - **백업 설정**: 민감한 정보를 다루는 애플리케이션의 경우 `android:allowBackup="false"` 속성을 명시적으로 설정하여 adb를 통한 무단 데이터 백업을 방지해야 합니다. 특히 USB 디버깅이 활성화된 경우에 그렇습니다. - **네트워크 보안**: _res/xml/_의 사용자 지정 네트워크 보안 구성(`android:networkSecurityConfig="@xml/network_security_config"`)은 인증서 핀 및 HTTP 트래픽 설정과 같은 보안 세부정보를 지정할 수 있습니다. 예를 들어 특정 도메인에 대해 HTTP 트래픽을 허용하는 것입니다. -- **내보낸 활동 및 서비스**: 매니페스트에서 내보낸 활동 및 서비스를 식별하면 악용될 수 있는 구성 요소를 강조할 수 있습니다. 동적 테스트 중 추가 분석을 통해 이러한 구성 요소를 악용하는 방법을 밝혀낼 수 있습니다. +- **내보내기된 활동 및 서비스**: 매니페스트에서 내보내기된 활동 및 서비스를 식별하면 악용될 수 있는 구성 요소를 강조할 수 있습니다. 동적 테스트 중 추가 분석을 통해 이러한 구성 요소를 악용하는 방법을 밝혀낼 수 있습니다. - **콘텐츠 제공자 및 파일 제공자**: 노출된 콘텐츠 제공자는 무단 데이터 접근 또는 수정이 가능할 수 있습니다. 파일 제공자의 구성도 면밀히 검토해야 합니다. - **브로드캐스트 수신기 및 URL 스킴**: 이러한 구성 요소는 악용될 수 있으며, 입력 취약점에 대한 URL 스킴 관리 방법에 특히 주의해야 합니다. - **SDK 버전**: `minSdkVersion`, `targetSDKVersion`, `maxSdkVersion` 속성은 지원되는 Android 버전을 나타내며, 보안상의 이유로 구식의 취약한 Android 버전을 지원하지 않는 것이 중요합니다. @@ -78,7 +78,7 @@ APK의 **문자열**을 살펴보면 **비밀번호**, **URL** ([https://github. ### Tapjacking **Tapjacking**은 **악의적인** **애플리케이션**이 실행되어 **희생 애플리케이션 위에 위치하는 공격**입니다. 희생 앱을 가시적으로 가리면, 사용자 인터페이스는 사용자가 상호작용하도록 속이도록 설계되어 있으며, 이 상호작용은 희생 앱으로 전달됩니다.\ -결과적으로, 사용자는 실제로 희생 앱에서 작업을 수행하고 있다는 사실을 **모르게 됩니다**. +결과적으로, 사용자는 실제로 희생 앱에서 작업을 수행하고 있다는 사실을 알지 못하게 됩니다. 자세한 정보는 다음에서 확인하세요: @@ -100,16 +100,16 @@ android-task-hijacking.md **내부 저장소** -Android에서 **내부** 저장소에 **저장된** 파일은 **생성한 앱**만 **접근할 수 있도록 설계**되었습니다. 이 보안 조치는 Android 운영 체제에 의해 **강제 적용**되며, 대부분의 애플리케이션의 보안 요구 사항에 일반적으로 적합합니다. 그러나 개발자는 때때로 `MODE_WORLD_READABLE` 및 `MODE_WORLD_WRITABLE`와 같은 모드를 사용하여 파일이 서로 다른 애플리케이션 간에 **공유되도록 허용합니다**. 그러나 이러한 모드는 **다른 애플리케이션, 특히 악의적인 애플리케이션**에 의한 파일 접근을 제한하지 않습니다. +Android에서 **내부** 저장소에 **저장된** 파일은 **생성한 앱**만 **접근할 수 있도록 설계**되었습니다. 이 보안 조치는 Android 운영 체제에 의해 **강제 적용**되며, 대부분의 애플리케이션의 보안 요구 사항에 일반적으로 적합합니다. 그러나 개발자들은 때때로 `MODE_WORLD_READABLE` 및 `MODE_WORLD_WRITABLE`와 같은 모드를 사용하여 파일이 서로 다른 애플리케이션 간에 **공유**될 수 있도록 합니다. 그러나 이러한 모드는 **다른 애플리케이션, 특히 악의적인 애플리케이션**에 의한 파일 접근을 제한하지 않습니다. 1. **정적 분석:** - `MODE_WORLD_READABLE` 및 `MODE_WORLD_WRITABLE`의 사용이 **신중하게 검토**되어야 합니다. 이러한 모드는 **원치 않거나 무단 접근**을 **노출할 수 있습니다**. 2. **동적 분석:** -- 앱에서 생성된 파일에 설정된 **권한**을 **확인**하세요. 특히, **전 세계적으로 읽거나 쓸 수 있도록 설정된 파일이 있는지 확인**하세요. 이는 **어떤 애플리케이션**이든 장치에 설치된 경우, 출처나 의도에 관계없이 이러한 파일을 **읽거나 수정**할 수 있게 하여 상당한 보안 위험을 초래할 수 있습니다. +- 앱에서 생성된 파일에 설정된 **권한**을 **확인**하세요. 특히, 파일이 **전 세계적으로 읽거나 쓸 수 있도록 설정되어 있는지** 확인하세요. 이는 **장치에 설치된 모든 애플리케이션**이, 출처나 의도에 관계없이, 이러한 파일을 **읽거나 수정**할 수 있게 하여 상당한 보안 위험을 초래할 수 있습니다. **외부 저장소** -**외부 저장소**에서 파일을 다룰 때는 몇 가지 주의 사항이 있습니다: +**외부 저장소**(예: SD 카드)에서 파일을 다룰 때는 몇 가지 주의 사항을 고려해야 합니다: 1. **접근성**: - 외부 저장소의 파일은 **전 세계적으로 읽고 쓸 수 있습니다**. 즉, 모든 애플리케이션이나 사용자가 이러한 파일에 접근할 수 있습니다. @@ -117,14 +117,14 @@ Android에서 **내부** 저장소에 **저장된** 파일은 **생성한 앱** - 접근이 용이하므로 **민감한 정보를 외부 저장소에 저장하지 않는 것이 좋습니다**. - 외부 저장소는 제거되거나 모든 애플리케이션에 의해 접근될 수 있어 보안성이 떨어집니다. 3. **외부 저장소에서 데이터 처리**: -- 외부 저장소에서 검색한 데이터에 대해 항상 **입력 유효성 검사를 수행**하세요. 이는 데이터가 신뢰할 수 없는 출처에서 온 것이기 때문에 중요합니다. +- 외부 저장소에서 검색한 데이터에 대해 항상 **입력 검증**을 수행하세요. 이는 데이터가 신뢰할 수 없는 출처에서 온 것이기 때문에 중요합니다. - 외부 저장소에 실행 파일이나 클래스 파일을 저장하여 동적으로 로드하는 것은 강력히 권장되지 않습니다. -- 애플리케이션이 외부 저장소에서 실행 파일을 검색해야 하는 경우, 이러한 파일이 **서명되고 암호학적으로 검증**된 후 동적으로 로드되도록 해야 합니다. 이 단계는 애플리케이션의 보안 무결성을 유지하는 데 중요합니다. +- 애플리케이션이 외부 저장소에서 실행 파일을 검색해야 하는 경우, 이러한 파일이 **서명되고 암호학적으로 검증**된 후 동적으로 로드되도록 해야 합니다. 이 단계는 애플리케이션의 보안 무결성을 유지하는 데 필수적입니다. -외부 저장소는 `/storage/emulated/0`, `/sdcard`, `/mnt/sdcard`에서 **접근할 수 있습니다**. +외부 저장소는 `/storage/emulated/0`, `/sdcard`, `/mnt/sdcard`에서 접근할 수 있습니다. > [!TIP] -> Android 4.4 (**API 17**)부터 SD 카드에는 **앱 전용 디렉토리로의 접근을 제한하는 디렉토리 구조**가 있습니다. 이는 악의적인 애플리케이션이 다른 앱의 파일에 대한 읽기 또는 쓰기 접근을 얻는 것을 방지합니다. +> Android 4.4 (**API 17**)부터 SD 카드에는 **앱 전용 디렉토리로의 접근을 제한하는 디렉토리 구조**가 있습니다. 이는 악의적인 애플리케이션이 다른 앱의 파일에 대한 읽기 또는 쓰기 접근을 얻지 못하도록 방지합니다. **명확한 텍스트로 저장된 민감한 데이터** @@ -135,7 +135,7 @@ Android에서 **내부** 저장소에 **저장된** 파일은 **생성한 앱** **모든 인증서 수락** -어떤 이유로 개발자는 때때로 호스트 이름이 다음과 같은 코드 줄과 일치하지 않더라도 모든 인증서를 수락합니다: +어떤 이유로 개발자들이 호스트 이름이 코드의 다음 줄과 일치하지 않더라도 모든 인증서를 수락하는 경우가 있습니다: ```java SSLSocketFactory sf = new cc(trustStore); sf.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER); @@ -150,7 +150,7 @@ A good way to test this is to try to capture the traffic using some proxy like B **Use of Insecure and/or Deprecated Algorithms** -개발자는 **권장되지 않는 알고리즘**을 사용하여 **검증**을 수행하거나 **데이터를 저장**하거나 **전송**해서는 안 됩니다. 이러한 알고리즘에는 RC4, MD4, MD5, SHA1 등이 포함됩니다. 예를 들어 **해시**를 사용하여 비밀번호를 저장하는 경우, 소금을 사용하여 해시 브루트 포스 **저항성**이 있는 해시를 사용해야 합니다. +개발자는 **권장되지 않는 알고리즘**을 사용하여 **검증**을 수행하거나 **데이터를 저장**하거나 **전송**해서는 안 됩니다. 이러한 알고리즘에는 RC4, MD4, MD5, SHA1 등이 포함됩니다. 예를 들어 **해시**를 사용하여 비밀번호를 저장하는 경우, 소금을 사용하여 해시 브루트 포스 **저항**이 가능한 해시를 사용해야 합니다. ### Other checks @@ -271,7 +271,7 @@ You need to activate the **debugging** options and it will be cool if you can ** > [!WARNING] > **Android 4.0** 이후 버전에서는 **응용 프로그램이 자신의 로그에만 접근할 수 있습니다**. 따라서 응용 프로그램은 다른 앱의 로그에 접근할 수 없습니다.\ -> 어쨌든, **민감한 정보를 로그로 남기지 않는 것이 여전히 권장됩니다**. +> 어쨌든, **민감한 정보를 기록하지 않는 것이 여전히 권장됩니다**. **Copy/Paste Buffer Caching** @@ -279,7 +279,7 @@ Android의 **클립보드 기반** 프레임워크는 앱에서 복사-붙여넣 **Crash Logs** -애플리케이션이 **충돌**하고 **로그를 저장**하는 경우, 이러한 로그는 공격자에게 도움이 될 수 있으며, 특히 애플리케이션을 리버스 엔지니어링할 수 없는 경우 더욱 그렇습니다. 이 위험을 완화하기 위해 충돌 시 로그를 남기지 않도록 하고, 로그를 네트워크를 통해 전송해야 하는 경우 SSL 채널을 통해 전송되도록 해야 합니다. +애플리케이션이 **충돌**하고 **로그를 저장**하는 경우, 이러한 로그는 공격자에게 도움이 될 수 있으며, 특히 애플리케이션을 리버스 엔지니어링할 수 없는 경우 더욱 그렇습니다. 이 위험을 완화하기 위해 충돌 시 로그를 기록하지 않도록 하고, 로그를 네트워크를 통해 전송해야 하는 경우 보안을 위해 SSL 채널을 통해 전송되도록 해야 합니다. 펜테스터로서, **이 로그를 살펴보는 것을 시도해 보세요**. @@ -292,14 +292,14 @@ Android의 **클립보드 기반** 프레임워크는 앱에서 복사-붙여넣 대부분의 애플리케이션은 정보를 저장하기 위해 **내부 SQLite 데이터베이스**를 사용합니다. 펜테스트 중에 생성된 **데이터베이스**, **테이블** 및 **열**의 이름과 저장된 모든 **데이터**를 살펴보아야 합니다. 왜냐하면 **민감한 정보**(취약점이 될 수 있음)를 찾을 수 있기 때문입니다.\ 데이터베이스는 `/data/data/the.package.name/databases`에 위치해야 하며, 예를 들어 `/data/data/com.mwr.example.sieve/databases`와 같습니다. -데이터베이스가 기밀 정보를 저장하고 **암호화되어** 있지만 애플리케이션 내에서 **비밀번호**를 **찾을 수** 있다면 여전히 **취약점**입니다. +데이터베이스가 기밀 정보를 저장하고 **암호화**되어 있지만 애플리케이션 내에서 **비밀번호**를 찾을 수 있다면 여전히 **취약점**입니다. -`.tables`를 사용하여 테이블을 나열하고, `.schema `을 사용하여 테이블의 열을 나열합니다. +`.tables`를 사용하여 테이블을 나열하고, `.schema `을 사용하여 테이블의 열을 나열하세요. ### Drozer (Exploit Activities, Content Providers and Services) -From [Drozer Docs](https://labs.mwrinfosecurity.com/assets/BlogFiles/mwri-drozer-user-guide-2015-03-23.pdf): **Drozer**는 Android 앱의 역할을 **가정**하고 다른 앱과 상호작용할 수 있게 해줍니다. 이는 설치된 애플리케이션이 할 수 있는 모든 작업을 수행할 수 있으며, Android의 프로세스 간 통신(IPC) 메커니즘을 활용하고 기본 운영 체제와 상호작용할 수 있습니다.\ -Drozer는 **내보낸 활동, 내보낸 서비스 및 콘텐츠 제공자**를 **악용**하는 데 유용한 도구입니다. +From [Drozer Docs](https://labs.mwrinfosecurity.com/assets/BlogFiles/mwri-drozer-user-guide-2015-03-23.pdf): **Drozer**는 **Android 앱의 역할을 가정하고** 다른 앱과 상호작용할 수 있게 해줍니다. 이는 설치된 애플리케이션이 할 수 있는 모든 작업을 수행할 수 있으며, Android의 프로세스 간 통신(IPC) 메커니즘을 활용하고 기본 운영 체제와 상호작용할 수 있습니다.\ +Drozer는 **내보낸 활동, 내보낸 서비스 및 콘텐츠 제공자를 악용하는 데 유용한 도구**입니다. ### Exploiting exported Activities @@ -319,38 +319,38 @@ adb에서 내보낸 활동을 시작할 수도 있습니다: ```bash adb shell am start -n com.example.demo/com.example.test.MainActivity ``` -**NOTE**: MobSF는 활동에서 `android:launchMode`로 _**singleTask/singleInstance**_를 사용하는 것을 악성으로 감지하지만, [이것](https://github.com/MobSF/Mobile-Security-Framework-MobSF/pull/750) 때문에, 이는 구버전(API 버전 < 21)에서만 위험한 것으로 보입니다. +**NOTE**: MobSF는 활동에서 `android:launchMode`로 _**singleTask/singleInstance**_를 사용할 경우 악성으로 감지하지만, [이것](https://github.com/MobSF/Mobile-Security-Framework-MobSF/pull/750) 때문에, 이는 구버전(API 버전 < 21)에서만 위험한 것으로 보입니다. > [!TIP] -> 권한 우회가 항상 취약점이 되는 것은 아니며, 이는 우회가 어떻게 작동하는지와 어떤 정보가 노출되는지에 따라 다릅니다. +> 권한 우회가 항상 취약점은 아니라는 점에 유의해야 하며, 이는 우회가 어떻게 작동하는지와 어떤 정보가 노출되는지에 따라 다릅니다. **민감한 정보 유출** -**활동은 결과를 반환할 수도 있습니다**. 만약 당신이 **`setResult`** 메서드를 호출하고 **민감한 정보를 반환하는** 내보내기된 보호되지 않은 활동을 찾는다면, 이는 민감한 정보 유출입니다. +**활동은 결과를 반환할 수도 있습니다**. 만약 **`setResult`** 메서드를 호출하고 **민감한 정보를 반환하는** 내보내기된 보호되지 않은 활동을 찾는 데 성공한다면, 민감한 정보 유출이 발생합니다. #### Tapjacking -Tapjacking이 방지되지 않으면, 내보내기된 활동을 악용하여 **사용자가 예상치 못한 행동을 하게 만들 수 있습니다**. [**Tapjacking이 무엇인지에 대한 더 많은 정보는 링크를 따라가세요**](#tapjacking). +Tapjacking이 방지되지 않으면, 내보내기된 활동을 악용하여 **사용자가 예상치 못한 작업을 수행하게** 만들 수 있습니다. [**Tapjacking이 무엇인지에 대한 더 많은 정보는 링크를 따라가세요**](#tapjacking). ### 콘텐츠 제공자 악용 - 민감한 정보 접근 및 조작 [**콘텐츠 제공자가 무엇인지 새롭게 알고 싶다면 이 글을 읽어보세요.**](android-applications-basics.md#content-provider)\ -콘텐츠 제공자는 기본적으로 **데이터를 공유하는** 데 사용됩니다. 앱에 사용 가능한 콘텐츠 제공자가 있다면, 그들로부터 **민감한** 데이터를 **추출할 수** 있을지도 모릅니다. 또한 **SQL 인젝션** 및 **경로 탐색**을 테스트하는 것도 흥미롭습니다. 왜냐하면 이들이 취약할 수 있기 때문입니다. +콘텐츠 제공자는 기본적으로 **데이터를 공유**하는 데 사용됩니다. 앱에 사용 가능한 콘텐츠 제공자가 있다면, 그들로부터 **민감한** 데이터를 **추출**할 수 있을지도 모릅니다. 또한 **SQL 인젝션** 및 **경로 탐색**의 가능성을 테스트하는 것도 흥미롭습니다. 이들은 취약할 수 있습니다. [**Drozer로 콘텐츠 제공자를 악용하는 방법을 배우세요.**](drozer-tutorial/index.html#content-providers) ### **서비스 악용** [**서비스가 무엇인지 새롭게 알고 싶다면 이 글을 읽어보세요.**](android-applications-basics.md#services)\ -서비스의 동작은 `onStartCommand` 메서드에서 시작된다는 것을 기억하세요. +서비스의 동작은 `onStartCommand` 메서드에서 시작된다는 점을 기억하세요. -서비스는 기본적으로 **데이터를 수신하고**, **처리**하며 **응답**(또는 응답하지 않을 수 있음)을 **반환**할 수 있는 것입니다. 따라서 애플리케이션이 일부 서비스를 내보내고 있다면, **코드를 확인**하여 그것이 무엇을 하는지 이해하고 **민감한 정보를 추출하기 위해 동적으로 테스트**해야 합니다, 인증 수단을 우회하는 것...\ +서비스는 기본적으로 **데이터를 수신**하고, **처리**하며, **응답**(또는 하지 않을 수 있음)을 **반환**하는 것입니다. 따라서 애플리케이션이 일부 서비스를 내보내고 있다면, **코드를 확인**하여 그것이 무엇을 하는지 이해하고, **민감한 정보를 추출**하거나 인증 수단을 우회하기 위해 **동적으로 테스트**해야 합니다.\ [**Drozer로 서비스를 악용하는 방법을 배우세요.**](drozer-tutorial/index.html#services) ### **브로드캐스트 수신기 악용** [**브로드캐스트 수신기가 무엇인지 새롭게 알고 싶다면 이 글을 읽어보세요.**](android-applications-basics.md#broadcast-receivers)\ -브로드캐스트 수신기의 동작은 `onReceive` 메서드에서 시작된다는 것을 기억하세요. +브로드캐스트 수신기의 동작은 `onReceive` 메서드에서 시작된다는 점을 기억하세요. 브로드캐스트 수신기는 특정 유형의 메시지를 기다리고 있습니다. 수신기가 메시지를 처리하는 방식에 따라 취약할 수 있습니다.\ [**Drozer로 브로드캐스트 수신기를 악용하는 방법을 배우세요.**](#exploiting-broadcast-receivers) @@ -369,7 +369,7 @@ _패키지 이름을 **생략할 수** 있으며, 모바일은 해당 링크를 with alternative ``` -**코드 실행됨** +**실행된 코드** **앱에서 실행될 코드**를 찾으려면, 딥링크로 호출된 액티비티로 가서 **`onNewIntent`** 함수를 검색하세요. @@ -377,12 +377,12 @@ _패키지 이름을 **생략할 수** 있으며, 모바일은 해당 링크를 **민감한 정보** -딥링크를 찾을 때마다 **URL 매개변수를 통해 민감한 데이터(예: 비밀번호)를 수신하지 않는지 확인해야 합니다.** 다른 애플리케이션이 **딥링크를 가장하여 해당 데이터를 훔칠 수 있기 때문입니다!** +딥링크를 찾을 때마다 **URL 매개변수를 통해 민감한 데이터(예: 비밀번호)를 수신하지 않는지 확인**하세요. 다른 애플리케이션이 **딥링크를 가장하여 해당 데이터를 훔칠 수 있습니다!** **경로의 매개변수** -**딥링크가 URL의 경로 내에서 매개변수를 사용하고 있는지 확인해야 합니다.** 예: `https://api.example.com/v1/users/{username}`. 이 경우, `example://app/users?username=../../unwanted-endpoint%3fparam=value`와 같은 경로 탐색을 강제할 수 있습니다.\ -애플리케이션 내에서 올바른 엔드포인트를 찾으면 **Open Redirect**(경로의 일부가 도메인 이름으로 사용되는 경우), **계정 탈취**(CSRF 토큰 없이 사용자 세부정보를 수정할 수 있고 취약한 엔드포인트가 올바른 메서드를 사용하는 경우) 및 기타 취약점을 유발할 수 있습니다. 더 많은 [정보는 여기](http://dphoeniixx.com/2020/12/13-2/)에서 확인하세요. +**딥링크가 URL의 경로 내에서 매개변수를 사용하고 있는지 확인해야 합니다.** 예: `https://api.example.com/v1/users/{username}`. 이 경우, `example://app/users?username=../../unwanted-endpoint%3fparam=value`와 같이 경로 탐색을 강제할 수 있습니다.\ +애플리케이션 내에서 올바른 엔드포인트를 찾으면 **Open Redirect**(경로의 일부가 도메인 이름으로 사용되는 경우), **계정 탈취**(CSRF 토큰 없이 사용자 세부정보를 수정할 수 있고 취약한 엔드포인트가 올바른 메서드를 사용하는 경우) 및 기타 취약점을 유발할 수 있습니다. 더 많은 [정보는 여기에서](http://dphoeniixx.com/2020/12/13-2/) 확인하세요. **더 많은 예시** @@ -390,9 +390,9 @@ _패키지 이름을 **생략할 수** 있으며, 모바일은 해당 링크를 ### 전송 계층 검사 및 검증 실패 -- **인증서는 Android 애플리케이션에서 항상 제대로 검사되지 않습니다.** 이러한 애플리케이션이 경고를 간과하고 자체 서명된 인증서를 수락하거나, 경우에 따라 HTTP 연결로 되돌아가는 것이 일반적입니다. +- **인증서는 Android 애플리케이션에서 항상 제대로 검사되지 않습니다.** 이러한 애플리케이션이 경고를 무시하고 자체 서명된 인증서를 수락하거나, 경우에 따라 HTTP 연결로 되돌아가는 경우가 흔합니다. - **SSL/TLS 핸드셰이크 중 협상이 때때로 약합니다.** 안전하지 않은 암호 모음을 사용하는 경우가 있습니다. 이 취약점은 연결을 중간자(MITM) 공격에 취약하게 만들어 공격자가 데이터를 복호화할 수 있게 합니다. -- **민감한 정보의 유출**은 애플리케이션이 안전한 채널을 사용하여 인증하지만 다른 거래를 위해 비안전한 채널을 통해 통신할 때 위험이 있습니다. 이 접근 방식은 세션 쿠키나 사용자 세부정보와 같은 민감한 데이터를 악의적인 엔티티의 가로채기로부터 보호하지 못합니다. +- **민감한 정보의 유출**은 애플리케이션이 안전한 채널을 사용하여 인증하지만 다른 거래에 대해 비안전한 채널을 통해 통신할 때 위험이 있습니다. 이 접근 방식은 세션 쿠키나 사용자 세부정보와 같은 민감한 데이터를 악의적인 엔티티의 가로채기로부터 보호하지 못합니다. #### 인증서 검증 @@ -415,9 +415,9 @@ HTTP 트래픽을 검사하려면 **프록시 도구의 인증서를 설치해 SSL 핀닝이 구현된 경우 HTTPS 트래픽을 검사하기 위해 이를 우회해야 합니다. 이를 위한 다양한 방법이 있습니다: - **apk**를 자동으로 **수정**하여 SSL 핀닝을 **우회**하는 [**apk-mitm**](https://github.com/shroudedcode/apk-mitm)을 사용할 수 있습니다. 이 옵션의 가장 큰 장점은 SSL 핀닝을 우회하기 위해 루트가 필요하지 않지만, 애플리케이션을 삭제하고 새로 설치해야 하며, 항상 작동하지는 않습니다. -- **Frida**를 사용하여 이 보호를 우회할 수 있습니다(아래에서 논의됨). Burp+Frida+Genymotion을 사용하는 방법에 대한 가이드는 [https://spenkk.github.io/bugbounty/Configuring-Frida-with-Burp-and-GenyMotion-to-bypass-SSL-Pinning/](https://spenkk.github.io/bugbounty/Configuring-Frida-with-Burp-and-GenyMotion-to-bypass-SSL-Pinning/)입니다. +- **Frida**를 사용하여 이 보호를 우회할 수 있습니다(아래에서 논의됨). Burp+Frida+Genymotion을 사용하는 방법에 대한 가이드는 [여기](https://spenkk.github.io/bugbounty/Configuring-Frida-with-Burp-and-GenyMotion-to-bypass-SSL-Pinning/)에서 확인하세요. - **objection**을 사용하여 SSL 핀닝을 **자동으로 우회**할 수도 있습니다: `objection --gadget com.package.app explore --startup-command "android sslpinning disable"` -- **MobSF 동적 분석**을 사용하여 SSL 핀닝을 **자동으로 우회**할 수도 있습니다(아래에서 설명됨). +- **MobSF 동적 분석**을 사용하여 SSL 핀닝을 **자동으로 우회**할 수도 있습니다(아래에서 설명). - 여전히 캡처하지 못한 트래픽이 있다고 생각되면 **iptables를 사용하여 트래픽을 burp로 포워딩**할 수 있습니다. 이 블로그를 읽어보세요: [https://infosecwriteups.com/bypass-ssl-pinning-with-ip-forwarding-iptables-568171b52b62](https://infosecwriteups.com/bypass-ssl-pinning-with-ip-forwarding-iptables-568171b52b62) #### 일반 웹 취약점 찾기 @@ -432,15 +432,15 @@ Android 애플리케이션을 펜테스트하려면 Frida를 사용하는 방법 - Frida 사용 방법 배우기: [**Frida 튜토리얼**](frida-tutorial/index.html) - Frida로 작업하기 위한 "GUI": [**https://github.com/m0bilesecurity/RMS-Runtime-Mobile-Security**](https://github.com/m0bilesecurity/RMS-Runtime-Mobile-Security) -- Ojection은 Frida 사용을 자동화하는 데 훌륭합니다: [**https://github.com/sensepost/objection**](https://github.com/sensepost/objection) **,** [**https://github.com/dpnishant/appmon**](https://github.com/dpnishant/appmon) +- Ojection은 Frida 사용을 자동화하는 데 유용합니다: [**https://github.com/sensepost/objection**](https://github.com/sensepost/objection) **,** [**https://github.com/dpnishant/appmon**](https://github.com/dpnishant/appmon) - 여기에서 멋진 Frida 스크립트를 찾을 수 있습니다: [**https://codeshare.frida.re/**](https://codeshare.frida.re) - [https://erfur.github.io/blog/dev/code-injection-without-ptrace](https://erfur.github.io/blog/dev/code-injection-without-ptrace)에서 지시한 대로 Frida를 로드하여 안티 디버깅 / 안티 Frida 메커니즘을 우회해 보세요(도구 [linjector](https://github.com/erfur/linjector-rs)). ### **메모리 덤프 - Fridump** -애플리케이션이 비밀번호나 암기구문과 같은 민감한 정보를 저장하고 있지 않은지 확인하세요. +애플리케이션이 비밀번호나 니모닉과 같은 민감한 정보를 메모리에 저장하고 있지 않은지 확인하세요. -[**Fridump3**](https://github.com/rootbsd/fridump3)를 사용하여 앱의 메모리를 덤프할 수 있습니다: +[**Fridump3**](https://github.com/rootbsd/fridump3)를 사용하여 다음과 같이 앱의 메모리를 덤프할 수 있습니다: ```bash # With PID python3 fridump3.py -u @@ -455,7 +455,7 @@ strings * | grep -E "^[a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+ [a ``` ### **Keystore의 민감한 데이터** -Android에서 Keystore는 민감한 데이터를 저장하기에 가장 좋은 장소입니다. 그러나 충분한 권한이 있으면 여전히 **접근할 수 있습니다**. 애플리케이션이 여기에서 **명확한 텍스트로 민감한 데이터를 저장하는 경향이 있기 때문에** 루트 사용자로서 또는 장치에 물리적으로 접근할 수 있는 사람이 이 데이터를 훔칠 수 있는지 확인해야 합니다. +Android에서 Keystore는 민감한 데이터를 저장하기에 가장 좋은 장소이지만, 충분한 권한이 있으면 여전히 **접근할 수 있습니다**. 애플리케이션이 여기에서 **명확한 텍스트로 민감한 데이터를 저장하는 경향이 있기 때문에** 루트 사용자로서 또는 장치에 물리적으로 접근할 수 있는 사람이 이 데이터를 훔칠 수 있는지 확인해야 합니다. 앱이 keystore에 데이터를 저장하더라도, 데이터는 암호화되어야 합니다. @@ -465,7 +465,7 @@ frida -U -f com.example.app -l frida-scripts/tracer-cipher.js ``` ### **지문/생체 인식 우회** -다음 Frida 스크립트를 사용하면 **지문 인증을 우회**할 수 있을 수 있으며, Android 애플리케이션이 **특정 민감한 영역을 보호하기 위해 수행할 수 있습니다:** +다음 Frida 스크립트를 사용하면 **지문 인증을 우회**할 수 있을 수 있습니다. Android 애플리케이션이 **특정 민감한 영역을 보호하기 위해 수행할 수 있습니다:** ```bash frida --codeshare krapgras/android-biometric-bypass-update-android-11 -U -f ``` @@ -477,7 +477,7 @@ frida --codeshare krapgras/android-biometric-bypass-update-android-11 -U -f ` `VT_UPLOAD = TRUE`). `VT_UPLOAD`를 `False`로 설정하면 **해시**가 파일 대신 **업로드**됩니다. +MobSF는 **diff/비교** 분석을 허용하고 **VirusTotal**와 통합할 수 있습니다 (API 키를 _MobSF/settings.py_에 설정하고 활성화해야 합니다: `VT_ENABLED = TRUE` `VT_API_KEY = ` `VT_UPLOAD = TRUE`). `VT_UPLOAD`를 `False`로 설정하면 **해시**가 파일 대신 **업로드**됩니다. ### MobSF를 이용한 보조 동적 분석 -**MobSF**는 **Android**에서 **동적 분석**에 매우 유용할 수 있지만, 이 경우 MobSF와 **genymotion**을 호스트에 설치해야 합니다 (VM이나 Docker는 작동하지 않습니다). _참고: **먼저 genymotion에서 VM을 시작**한 후 **MobSF를 시작해야 합니다.**_\ +**MobSF**는 **Android**에서 **동적 분석**에 매우 유용할 수 있지만, 이 경우 MobSF와 **genymotion**을 호스트에 설치해야 합니다 (VM이나 Docker는 작동하지 않습니다). _참고: **먼저 genymotion에서 VM을 시작한 후** **MobSF를 시작해야 합니다.**_\ **MobSF 동적 분석기**는 다음을 수행할 수 있습니다: -- **애플리케이션 데이터 덤프** (URL, 로그, 클립보드, 사용자가 만든 스크린샷, "**Exported Activity Tester**"가 만든 스크린샷, 이메일, SQLite 데이터베이스, XML 파일 및 기타 생성된 파일). 이 모든 것은 자동으로 수행되며, 스크린샷은 원할 때 눌러야 하거나 "**Exported Activity Tester**"를 눌러 모든 내보낸 활동의 스크린샷을 얻어야 합니다. +- **애플리케이션 데이터 덤프** (URL, 로그, 클립보드, 사용자가 만든 스크린샷, "**Exported Activity Tester**"가 만든 스크린샷, 이메일, SQLite 데이터베이스, XML 파일 및 기타 생성된 파일). 이 모든 것은 자동으로 수행되지만 스크린샷은 사용자가 원할 때 눌러야 하며, 모든 내보낸 활동의 스크린샷을 얻으려면 "**Exported Activity Tester**"를 눌러야 합니다. - **HTTPS 트래픽 캡처** - **Frida**를 사용하여 **런타임** **정보**를 얻기 -Android **버전 > 5**에서는 **자동으로 Frida를 시작**하고 **트래픽을 캡처**하기 위해 전역 **프록시** 설정을 설정합니다. 테스트된 애플리케이션에서만 트래픽을 캡처합니다. +Android **버전 > 5**에서는 **자동으로 Frida를 시작**하고 **트래픽 캡처**를 위해 전역 **프록시** 설정을 구성합니다. 테스트된 애플리케이션의 트래픽만 캡처합니다. **Frida** 기본적으로 SSL 핀닝, **루트 탐지** 및 **디버거 탐지**를 우회하고 **흥미로운 API**를 모니터링하기 위해 일부 Frida 스크립트를 사용합니다.\ -MobSF는 또한 **내보낸 활동을 호출**하고, 그 스크린샷을 **캡처**하여 보고서에 **저장**할 수 있습니다. +MobSF는 또한 **내보낸 활동을 호출**하고, 그 스크린샷을 캡처하여 보고서에 **저장**할 수 있습니다. 동적 테스트를 **시작**하려면 초록색 버튼: "**Start Instrumentation**"을 누릅니다. "**Frida Live Logs**"를 눌러 Frida 스크립트에서 생성된 로그를 보고, "**Live API Monitor**"를 눌러 후킹된 메서드에 대한 모든 호출, 전달된 인수 및 반환 값을 확인합니다 (이것은 "Start Instrumentation"을 누른 후에 나타납니다).\ -MobSF는 또한 자신의 **Frida 스크립트**를 로드할 수 있습니다 (Frida 스크립트의 결과를 MobSF에 보내려면 `send()` 함수를 사용하십시오). 또한 **여러 개의 미리 작성된 스크립트**를 로드할 수 있습니다 (더 추가할 수 있습니다 `MobSF/DynamicAnalyzer/tools/frida_scripts/others/`), 그냥 **선택하고**, "**Load**"를 누르고 "**Start Instrumentation**"을 누릅니다 (해당 스크립트의 로그는 "**Frida Live Logs**"에서 볼 수 있습니다). +MobSF는 또한 자신의 **Frida 스크립트**를 로드할 수 있습니다 (Frida 스크립트의 결과를 MobSF에 보내려면 `send()` 함수를 사용하십시오). 또한 로드할 수 있는 **여러 사전 작성된 스크립트**가 있습니다 (더 추가할 수 있습니다 `MobSF/DynamicAnalyzer/tools/frida_scripts/others/`), 그냥 **선택하고**, "**Load**"를 누르고 "**Start Instrumentation**"을 누릅니다 (해당 스크립트의 로그는 "**Frida Live Logs**"에서 볼 수 있습니다). ![](<../../images/image (419).png>) @@ -562,7 +562,7 @@ MobSF는 또한 자신의 **Frida 스크립트**를 로드할 수 있습니다 ( **Shell** -Mobsf는 또한 동적 분석 페이지 하단에 몇 가지 **adb** 명령, **MobSF 명령** 및 일반 **shell** **명령**을 포함한 셸을 제공합니다. 몇 가지 흥미로운 명령: +Mobsf는 동적 분석 페이지 하단에 몇 가지 **adb** 명령, **MobSF 명령** 및 일반 **shell** **명령**을 포함한 셸을 제공합니다. 몇 가지 흥미로운 명령: ```bash help shell ls @@ -573,10 +573,10 @@ receivers ``` **HTTP 도구** -HTTP 트래픽이 캡처되면 "**HTTP(S) Traffic**" 하단에서 캡처된 트래픽의 보기 또는 "**Start HTTPTools**" 녹색 버튼에서 더 나은 보기를 볼 수 있습니다. 두 번째 옵션에서 **캡처된 요청**을 **프록시**(예: Burp 또는 Owasp ZAP)로 **전송**할 수 있습니다.\ +HTTP 트래픽이 캡처되면 "**HTTP(S) Traffic**" 하단에서 캡처된 트래픽의 보기 또는 "**Start HTTPTools**" 녹색 버튼에서 더 나은 보기를 볼 수 있습니다. 두 번째 옵션에서 **캡처된 요청**을 **프록시**인 Burp 또는 Owasp ZAP으로 **전송**할 수 있습니다.\ 이를 위해, _Burp 켜기 -->_ _Intercept 끄기 --> MobSB HTTPTools에서 요청 선택_ --> "**Send to Fuzzer**" 버튼을 누르기 --> _프록시 주소 선택_ ([http://127.0.0.1:8080\\](http://127.0.0.1:8080)). -MobSF로 동적 분석을 마친 후 "**Start Web API Fuzzer**"를 눌러 **HTTP 요청을 퍼징**하고 취약점을 찾을 수 있습니다. +MobSF로 동적 분석을 마친 후 "**Start Web API Fuzzer**"를 눌러 **HTTP 요청을 퍼징**하고 취약점을 찾아볼 수 있습니다. > [!TIP] > MobSF로 동적 분석을 수행한 후 프록시 설정이 잘못 구성될 수 있으며 GUI에서 수정할 수 없습니다. 다음을 수행하여 프록시 설정을 수정할 수 있습니다: @@ -592,13 +592,13 @@ MobSF로 동적 분석을 마친 후 "**Start Web API Fuzzer**"를 눌러 **HTTP ### [Yaazhini](https://www.vegabird.com/yaazhini/) -이것은 **GUI를 사용한 정적 분석을 수행하기 위한 훌륭한 도구**입니다. +이것은 **GUI로 정적 분석을 수행하기 위한 훌륭한 도구**입니다. ![](<../../images/image (741).png>) ### [Qark](https://github.com/linkedin/qark) -이 도구는 **소스 코드** 또는 **패키지된 APK**에서 여러 **보안 관련 Android 애플리케이션 취약점**을 찾기 위해 설계되었습니다. 이 도구는 또한 발견된 취약점(노출된 활동, 인텐트, 탭재킹 등)을 악용하기 위한 "Proof-of-Concept" 배포 가능한 APK 및 **ADB 명령**을 생성할 수 있습니다. Drozer와 마찬가지로 테스트 장치를 루팅할 필요가 없습니다. +이 도구는 **소스 코드** 또는 **패키지된 APK**에서 여러 **보안 관련 Android 애플리케이션 취약점**을 찾기 위해 설계되었습니다. 이 도구는 또한 발견된 일부 취약점을 악용하기 위한 "Proof-of-Concept" 배포 가능한 APK 및 **ADB 명령**을 생성할 수 있습니다 (노출된 활동, 인텐트, 탭재킹 등...). Drozer와 마찬가지로 테스트 장치를 루팅할 필요가 없습니다. ```bash pip3 install --user qark # --user is only needed if not using a virtualenv qark --apk path/to/my.apk @@ -608,7 +608,7 @@ qark --java path/to/specific/java/file.java ### [**ReverseAPK**](https://github.com/1N3/ReverseAPK.git) - 모든 추출된 파일을 쉽게 참조할 수 있도록 표시 -- APK 파일을 자동으로 Java 및 Smali 형식으로 디컴파일 +- APK 파일을 Java 및 Smali 형식으로 자동으로 디컴파일 - 일반적인 취약점 및 동작을 위해 AndroidManifest.xml 분석 - 일반적인 취약점 및 동작에 대한 정적 소스 코드 분석 - 장치 정보 @@ -618,7 +618,7 @@ reverse-apk relative/path/to/APP.apk ``` ### [SUPER Android Analyzer](https://github.com/SUPERAndroidAnalyzer/super) -SUPER는 Windows, MacOS X 및 Linux에서 사용할 수 있는 명령줄 애플리케이션으로, _.apk_ 파일을 분석하여 취약점을 찾습니다. 이는 APK를 압축 해제하고 일련의 규칙을 적용하여 이러한 취약점을 감지합니다. +SUPER는 Windows, MacOS X 및 Linux에서 사용할 수 있는 명령줄 애플리케이션으로, _.apk_ 파일을 분석하여 취약점을 찾습니다. 이는 APK를 압축 해제하고 일련의 규칙을 적용하여 이러한 취약점을 감지하는 방식으로 이루어집니다. 모든 규칙은 `rules.json` 파일에 중심을 두고 있으며, 각 회사나 테스터는 필요에 따라 분석할 규칙을 생성할 수 있습니다. @@ -650,7 +650,7 @@ androbugs.exe -f [APK file] **Androwarn**는 Android 애플리케이션에서 발생할 수 있는 악의적인 행동을 감지하고 사용자에게 경고하는 것을 주요 목표로 하는 도구입니다. -감지는 애플리케이션의 Dalvik 바이트코드에 대한 **정적 분석**을 통해 수행되며, 이는 **Smali**로 표현됩니다. 이 과정은 [`androguard`](https://github.com/androguard/androguard) 라이브러리를 사용합니다. +감지는 애플리케이션의 Dalvik 바이트코드에 대한 **정적 분석**을 통해 수행되며, 이는 **Smali**로 표현됩니다. [`androguard`](https://github.com/androguard/androguard) 라이브러리를 사용합니다. 이 도구는 다음과 같은 **"나쁜" 애플리케이션의 일반적인 행동**을 찾습니다: 전화 식별자 유출, 오디오/비디오 흐름 가로채기, PIM 데이터 수정, 임의 코드 실행... ``` @@ -660,7 +660,7 @@ python androwarn.py -i my_application_to_be_analyzed.apk -r html -v 3 ![](<../../images/image (595).png>) -**MARA**는 **M**obile **A**pplication **R**everse engineering 및 **A**nalysis Framework입니다. 이는 OWASP 모바일 보안 위협에 대해 모바일 애플리케이션을 테스트하는 데 도움을 주기 위해 일반적으로 사용되는 모바일 애플리케이션 리버스 엔지니어링 및 분석 도구를 통합한 도구입니다. 이 작업을 모바일 애플리케이션 개발자와 보안 전문가에게 더 쉽고 친숙하게 만드는 것이 목표입니다. +**MARA**는 **모바일 애플리케이션 역공학 및 분석 프레임워크**입니다. 이는 OWASP 모바일 보안 위협에 대해 모바일 애플리케이션을 테스트하는 데 도움을 주기 위해 일반적으로 사용되는 모바일 애플리케이션 역공학 및 분석 도구를 모은 도구입니다. 이 작업을 모바일 애플리케이션 개발자와 보안 전문가에게 더 쉽고 친숙하게 만드는 것이 목표입니다. 다음과 같은 기능을 제공합니다: @@ -677,7 +677,7 @@ python androwarn.py -i my_application_to_be_analyzed.apk -r html -v 3 ## 코드 난독화/디오브스큐레이션 -코드를 난독화하는 데 사용하는 서비스와 구성에 따라 비밀이 난독화될 수도 있고 그렇지 않을 수도 있습니다. +사용하는 서비스와 구성에 따라 코드 난독화에 따라 비밀이 난독화될 수도 있고 그렇지 않을 수도 있습니다. ### [ProGuard]() @@ -717,13 +717,13 @@ APKiD는 **APK가 어떻게 만들어졌는지**에 대한 정보를 제공합 ### Manual -[사용자 정의 난독화를 리버스하는 방법에 대한 몇 가지 요령을 배우려면 이 튜토리얼을 읽으세요](manual-deobfuscation.md) +[사용자 정의 난독화를 역전하는 방법에 대한 몇 가지 요령을 배우려면 이 튜토리얼을 읽으세요](manual-deobfuscation.md) ## Labs ### [Androl4b](https://github.com/sh4hin/Androl4b) -AndroL4b는 Ubuntu-mate를 기반으로 한 Android 보안 가상 머신으로, 리버스 엔지니어링 및 악성코드 분석을 위한 다양한 보안 전문가와 연구자들의 최신 프레임워크, 튜토리얼 및 실습을 포함합니다. +AndroL4b는 우분투-메이트 기반의 Android 보안 가상 머신으로, 다양한 보안 전문가와 연구자들로부터 최신 프레임워크, 튜토리얼 및 실험실을 포함합니다. ## References diff --git a/src/mobile-pentesting/android-app-pentesting/shizuku-privileged-api.md b/src/mobile-pentesting/android-app-pentesting/shizuku-privileged-api.md index eadbdf62c..e3ad49a28 100644 --- a/src/mobile-pentesting/android-app-pentesting/shizuku-privileged-api.md +++ b/src/mobile-pentesting/android-app-pentesting/shizuku-privileged-api.md @@ -13,7 +13,7 @@ Shizuku는 **`app_process`**를 사용하여 특권 Java 프로세스를 생성 --- ## 1. 특권 서비스 시작하기 -`moe.shizuku.privileged.api`는 세 가지 방법으로 시작할 수 있으며, 결과 Binder 서비스는 모두 동일하게 동작합니다. +`moe.shizuku.privileged.api`는 세 가지 방법으로 시작할 수 있으며, 결과 Binder 서비스는 모두 동일하게 작동합니다. ### 1.1 무선 ADB (Android 11+) 1. **개발자 옵션 ➜ 무선 디버깅**을 활성화하고 장치를 페어링합니다. @@ -39,11 +39,11 @@ su -c sh /data/adb/shizuku/start.sh ```bash adb shell dumpsys activity service moe.shizuku.privileged.api | head ``` -성공적인 시작은 `Running services (1)`와 함께 특권 프로세스의 PID를 반환합니다. +A successful start returns `Running services (1)` together with the PID of the privileged process. --- ## 2. 애플리케이션에서 바인딩 -타사 앱은 `AndroidManifest.xml` 내에 다음만 필요합니다: +서드파티 앱은 `AndroidManifest.xml` 내에 다음만 필요합니다: ```xml ``` @@ -98,9 +98,9 @@ pm uninstall --user 0 com.miui.weather2 --- ## 4. 보안 고려사항 / 탐지 -1. Shizuku는 **ADB 디버깅** 권한이 필요하므로 _개발자 옵션 → USB/무선 디버깅_이 **활성화**되어 있어야 합니다. +1. Shizuku는 **ADB 디버깅** 권한이 필요하므로 _개발자 옵션 → USB/무선 디버깅_이 **활성화**되어야 합니다. 조직은 MDM을 통해 또는 `settings put global development_settings_enabled 0`를 통해 이를 차단할 수 있습니다. -2. 서비스는 `moe.shizuku.privileged.api`라는 이름으로 등록됩니다. +2. 서비스는 `moe.shizuku.privileged.api`라는 이름으로 자신을 등록합니다. 간단한 `adb shell service list | grep shizuku` (또는 엔드포인트 보안 규칙)가 그 존재를 감지합니다. 3. 기능은 `shell` 사용자가 이미 할 수 있는 것에 제한됩니다 – **루트가 아닙니다**. `system` 또는 `root` 사용자가 필요한 민감한 API는 여전히 접근할 수 없습니다. @@ -110,14 +110,14 @@ pm uninstall --user 0 com.miui.weather2 ## 5. 완화 * 생산 장치에서 USB/무선 디버깅을 비활성화합니다. * `moe.shizuku.privileged.api`를 노출하는 Binder 서비스를 모니터링합니다. -* 관리되지 않는 애플리케이션에서 AIDL 인터페이스를 차단하기 위해 SELinux 정책 (Android 엔터프라이즈)을 사용합니다. +* 관리되지 않는 애플리케이션에서 AIDL 인터페이스를 차단하기 위해 SELinux 정책(안드로이드 기업)을 사용합니다. --- ## 참조 - [Blog – Shizuku: Unlocking Advanced Android Capabilities Without Root](https://www.mobile-hacker.com/2025/07/14/shizuku-unlocking-advanced-android-capabilities-without-root/) -- [Shizuku 공식 문서](https://shizuku.rikka.app/) -- [awesome-shizuku – 지원되는 앱 목록](https://github.com/timschneeb/awesome-shizuku) +- [Shizuku Official Documentation](https://shizuku.rikka.app/) +- [awesome-shizuku – list of supported apps](https://github.com/timschneeb/awesome-shizuku) - [rish shell (privileged reverse-adb shell)](https://github.com/RikkaApps/Shizuku/blob/master/RISH.md) {{#include ../../banners/hacktricks-training.md}} diff --git a/src/mobile-pentesting/ios-pentesting/ios-pentesting-without-jailbreak.md b/src/mobile-pentesting/ios-pentesting/ios-pentesting-without-jailbreak.md index 2d01d072e..e6a2ade55 100644 --- a/src/mobile-pentesting/ios-pentesting/ios-pentesting-without-jailbreak.md +++ b/src/mobile-pentesting/ios-pentesting/ios-pentesting-without-jailbreak.md @@ -4,11 +4,12 @@ ## Main idea -**`get_task_allow`** 권한으로 서명된 애플리케이션은 타사 애플리케이션이 **`task_for_pid()`**라는 함수를 초기 애플리케이션의 프로세스 ID를 인수로 사용하여 실행할 수 있도록 허용하여 해당 작업 포트를 얻고(제어하고 메모리에 접근할 수 있게) 합니다. +**`get_task_allow`** 권한으로 서명된 애플리케이션은 타사 애플리케이션이 **`task_for_pid()`**라는 함수를 실행할 수 있도록 허용하며, 이 함수는 초기 애플리케이션의 프로세스 ID를 인수로 받아 해당 작업 포트를 가져옵니다(제어하고 메모리에 접근할 수 있게 됨). -하지만 IPA를 가져와서 권한으로 재서명한 후 장치에 다시 플래시하는 것은 그리 간단하지 않습니다. 이는 FairPlay 보호 때문입니다. 앱의 서명이 변경되면 DRM(디지털 권리 관리) 키가 **무효화되어 앱이 작동하지 않습니다**. +하지만 IPA를 가져와서 권한으로 재서명한 후 장치에 다시 플래시하는 것은 그리 간단하지 않습니다. 이는 FairPlay 보호 때문입니다. 앱의 서명이 변경되면 DRM(디지털 권리 관리) 키가 **무효화되며 앱이 작동하지 않습니다**. + +구형 탈옥된 장치에서는 IPA를 설치하고, **좋아하는 도구**(예: Iridium 또는 frida-ios-dump)를 사용하여 복호화한 후 장치에서 다시 가져올 수 있습니다. 가능하다면 복호화된 IPA를 클라이언트에게 요청하는 것이 좋습니다. -구형 탈옥된 장치에서는 IPA를 설치하고, **좋아하는 도구**(예: Iridium 또는 frida-ios-dump)를 사용하여 복호화한 후 장치에서 다시 가져오는 것이 가능합니다. 그러나 가능하다면 복호화된 IPA를 클라이언트에게 요청하는 것이 좋습니다. ## Obtain decrypted IPA @@ -18,16 +19,17 @@ 2. macOS에서 [Apple Configurator](https://apps.apple.com/au/app/apple-configurator/id1037126344?mt=12)를 설치하고 실행합니다. 3. Mac에서 `Terminal`을 열고 `/Users/[username]/Library/Group\\ Containers/K36BKF7T3D.group.com.apple.configurator/Library/Caches/Assets/TemporaryItems/MobileApps`로 이동합니다. 나중에 이 폴더에 IPA가 나타납니다. 4. iOS 장치가 표시되어야 합니다. 더블 클릭한 후 상단 메뉴 바에서 Add + → Apps를 클릭합니다. -5. Add를 클릭하면 Configurator가 Apple에서 IPA를 다운로드하고 장치에 푸시하려고 시도합니다. 이전에 제 권장 사항을 따르고 IPA를 이미 설치했다면 앱을 재설치하라는 프롬프트가 나타납니다. -6. IPA는 `/Users/[username]/Library/Group\\ Containers/K36BKF7T3D.group.com.apple.configurator/Library/Caches/Assets/TemporaryItems/MobileApps`에 다운로드되어 있으며, 여기서 가져올 수 있습니다. +5. Add를 클릭하면 Configurator가 Apple에서 IPA를 다운로드하고 장치에 푸시하려고 시도합니다. 이전에 제 추천을 따르고 IPA를 이미 설치했다면 앱을 재설치하라는 프롬프트가 나타납니다. +6. IPA는 `/Users/[username]/Library/Group\\ Containers/K36BKF7T3D.group.com.apple.configurator/Library/Caches/Assets/TemporaryItems/MobileApps`에 다운로드되며, 여기서 가져올 수 있습니다. 이 프로세스에 대한 더 자세한 정보는 [https://dvuln.com/blog/modern-ios-pentesting-no-jailbreak-needed](https://dvuln.com/blog/modern-ios-pentesting-no-jailbreak-needed)를 확인하세요. + ### Decrypting the app -IPA를 복호화하기 위해 설치할 것입니다. 그러나 구형 탈옥된 iPhone이 있는 경우, 애플리케이션에서 지원하지 않을 수 있는 버전일 가능성이 높습니다. 일반적으로 앱은 최신 버전만 지원합니다. +IPA를 복호화하기 위해 설치할 것입니다. 그러나 구형 탈옥된 iPhone이 있는 경우, 애플리케이션에서 지원하지 않을 가능성이 높습니다. 일반적으로 앱은 최신 버전만 지원합니다. -따라서 설치하려면 IPA를 압축 해제하세요: +따라서 설치하기 위해 IPA를 압축 해제합니다: ```bash unzip redacted.ipa -d unzipped ``` @@ -49,11 +51,11 @@ Cydia에서 **AppSync Unified tweak**가 필요할 수 있으니 `invalid signat ### 권한 패치 및 재서명 -`get-task-allow` 권한으로 애플리케이션을 재서명하기 위해 `app-signer`, `codesign`, `iResign`과 같은 여러 도구를 사용할 수 있습니다. `app-signer`는 재서명할 IPA 파일을 지정하고 **`get-task-allow`**를 설정하며 사용할 인증서와 프로비저닝 프로필을 쉽게 지정할 수 있는 매우 사용자 친화적인 인터페이스를 제공합니다. +`get-task-allow` 권한으로 애플리케이션을 재서명하기 위해 `app-signer`, `codesign`, `iResign`과 같은 여러 도구가 있습니다. `app-signer`는 재서명할 IPA 파일을 지정하고 **`get-task-allow`**를 설정하며 사용할 인증서와 프로비저닝 프로필을 쉽게 지정할 수 있는 매우 사용자 친화적인 인터페이스를 제공합니다. 인증서 및 서명 프로필에 관해서는 Apple이 Xcode를 통해 모든 계정에 **무료 개발자 서명 프로필**을 제공합니다. 앱을 생성하고 하나를 구성하세요. 그런 다음, `Settings` → `Privacy & Security`로 이동하여 **개발자 앱을 신뢰하도록 iPhone을 구성**하세요. `Developer Mode`를 클릭합니다. -재서명된 IPA로, 이제 장치에 설치하여 펜테스트를 진행할 시간입니다: +재서명된 IPA로 이제 장치에 설치하여 펜테스트를 진행할 시간입니다: ```bash ideviceinstaller -i resigned.ipa -w ``` @@ -61,7 +63,7 @@ ideviceinstaller -i resigned.ipa -w ### 개발자 모드 활성화 (iOS 16+) -iOS 16부터 Apple은 **개발자 모드**를 도입했습니다: `get_task_allow`를 포함하거나 개발 인증서로 서명된 모든 바이너리는 장치에서 개발자 모드가 활성화될 때까지 실행을 거부합니다. 이 플래그가 켜져 있지 않으면 Frida/LLDB를 연결할 수 없습니다. +iOS 16부터 Apple은 **개발자 모드**를 도입했습니다: `get_task_allow`를 포함하거나 개발 인증서로 서명된 이진 파일은 장치에서 개발자 모드가 활성화될 때까지 실행을 거부합니다. 이 플래그가 켜져 있지 않으면 Frida/LLDB를 연결할 수 없습니다. 1. **임의의** 개발자 서명 IPA를 전화기에 설치하거나 푸시합니다. 2. **설정 → 개인 정보 보호 및 보안 → 개발자 모드**로 이동하여 활성화합니다. @@ -75,7 +77,7 @@ iOS 16부터 Apple은 **개발자 모드**를 도입했습니다: `get_task_allo | 도구 | 요구 사항 | 강점 | 제한 사항 | |------|--------------|-----------|-------------| -| **AltStore 2 / SideStore** | 매 7일마다 무료 개발 프로필로 IPA를 재서명하는 macOS/Windows/Linux 동반자 | Wi-Fi를 통한 자동 재로드, iOS 17까지 작동 | 동일 네트워크에 있는 컴퓨터 필요, Apple에 의해 3개 앱 제한 | +| **AltStore 2 / SideStore** | 매 7일마다 무료 개발 프로필로 IPA를 재서명하는 macOS/Windows/Linux 동반자 | Wi-Fi를 통한 자동 재로드, iOS 17까지 작동 | 동일 네트워크에 있는 컴퓨터 필요, Apple에서 부과한 3개 앱 제한 | | **TrollStore 1/2** | CoreTrust 버그에 취약한 iOS 14 – 15.4.1 장치 | *영구* 서명 (7일 제한 없음); 설치 후 컴퓨터 필요 없음 | iOS 15.5+에서 지원되지 않음 (버그 패치됨) | 현재 iOS 버전에서의 정기적인 펜테스트를 위해 Alt/Side-Store가 일반적으로 가장 실용적인 선택입니다. diff --git a/src/network-services-pentesting/pentesting-telnet.md b/src/network-services-pentesting/pentesting-telnet.md index def44006f..f73b37447 100644 --- a/src/network-services-pentesting/pentesting-telnet.md +++ b/src/network-services-pentesting/pentesting-telnet.md @@ -69,15 +69,15 @@ Command: msfconsole -q -x 'use auxiliary/scanner/telnet/telnet_version; set RHOS ``` ### Recent Vulnerabilities (2022-2025) -* **CVE-2024-45698 – D-Link Wi-Fi 6 routers (DIR-X4860)**: 내장된 Telnet 서비스는 하드코딩된 자격 증명을 수용하고 입력을 정리하지 않아, 포트 23에서 조작된 명령을 통해 인증되지 않은 원격 RCE를 루트로 허용합니다. 펌웨어 ≥ 1.04B05에서 수정됨. +* **CVE-2024-45698 – D-Link Wi-Fi 6 routers (DIR-X4860)**: 내장된 Telnet 서비스는 하드코딩된 자격 증명을 수용하고 입력을 정리하지 않아, 포트 23에서 조작된 명령을 통해 루트로서 인증되지 않은 원격 RCE를 허용합니다. 펌웨어 ≥ 1.04B05에서 수정됨. * **CVE-2023-40478 – NETGEAR RAX30**: Telnet CLI `passwd` 명령에서 스택 기반 버퍼 오버플로우가 발생하여 인접한 공격자가 인증을 우회하고 루트로서 임의 코드를 실행할 수 있게 합니다. * **CVE-2022-39028 – GNU inetutils telnetd**: 두 바이트 시퀀스(`0xff 0xf7` / `0xff 0xf8`)가 NULL 포인터 역참조를 유발하여 `telnetd`를 충돌시킬 수 있으며, 여러 번의 충돌 후 지속적인 DoS를 초래합니다. -취약점 분류 중 이러한 CVE를 염두에 두십시오. 대상이 패치되지 않은 펌웨어 또는 레거시 inetutils Telnet 데몬을 실행 중이라면 코드 실행 또는 방해가 되는 DoS로의 직선 경로가 있을 수 있습니다. +취약점 분류 중 이러한 CVE를 염두에 두십시오—대상이 패치되지 않은 펌웨어 또는 레거시 inetutils Telnet 데몬을 실행 중이라면 코드 실행 또는 방해가 되는 DoS로의 직선 경로가 있을 수 있습니다. ### Sniffing Credentials & Man-in-the-Middle -Telnet은 자격 증명을 포함한 모든 것을 **명확한 텍스트**로 전송합니다. 이를 캡처하는 두 가지 빠른 방법: +Telnet은 자격 증명을 포함한 모든 것을 **명확한 텍스트**로 전송합니다. 자격 증명을 캡처하는 두 가지 빠른 방법: ```bash # Live capture with tcpdump (print ASCII) sudo tcpdump -i eth0 -A 'tcp port 23 and not src host $(hostname -I | cut -d" " -f1)' @@ -85,7 +85,7 @@ sudo tcpdump -i eth0 -A 'tcp port 23 and not src host $(hostname -I | cut -d" " # Wireshark display filter tcp.port == 23 && (telnet.data || telnet.option) ``` -활성 MITM의 경우, ARP 스푸핑(e.g. `arpspoof`/`ettercap`)을 동일한 스니핑 필터와 결합하여 스위치 네트워크에서 비밀번호를 수집합니다. +활성 MITM의 경우, ARP 스푸핑(예: `arpspoof`/`ettercap`)을 동일한 스니핑 필터와 결합하여 스위치 네트워크에서 비밀번호를 수집합니다. ### 자동화된 무차별 대입 / 비밀번호 스프레이링 ```bash @@ -116,7 +116,7 @@ Metasploit에는 여러 유용한 모듈이 있습니다: 1. SSH를 선호하고 Telnet 서비스를 완전히 비활성화하세요. 2. Telnet이 필요한 경우 관리 VLAN에만 바인딩하고 ACL을 적용하며 데몬을 TCP 래퍼로 감싸세요 (`/etc/hosts.allow`). 3. 레거시 `telnetd` 구현을 `ssl-telnet` 또는 `telnetd-ssl`로 교체하여 전송 암호화를 추가하되, **이는 데이터 전송 중 보호만 제공하며 비밀번호 추측은 여전히 간단합니다**. -4. 포트 23으로의 아웃바운드 트래픽을 모니터링하세요; 타협은 종종 엄격한 HTTP 이그레스 필터를 우회하기 위해 Telnet을 통해 리버스 쉘을 생성합니다. +4. 포트 23으로의 아웃바운드 트래픽을 모니터링하세요; 타협은 종종 엄격한 HTTP 이gress 필터를 우회하기 위해 Telnet을 통해 리버스 쉘을 생성합니다. ## References diff --git a/src/pentesting-web/less-code-injection-ssrf.md b/src/pentesting-web/less-code-injection-ssrf.md index 2767f464c..205adfb20 100644 --- a/src/pentesting-web/less-code-injection-ssrf.md +++ b/src/pentesting-web/less-code-injection-ssrf.md @@ -4,9 +4,9 @@ ## 개요 -LESS는 변수, 믹스인, 함수 및 강력한 `@import` 지시어를 추가하는 인기 있는 CSS 전처리기입니다. 컴파일 중에 LESS 엔진은 **`@import`** 문에서 참조된 리소스를 **가져와서** `(inline)` 옵션이 사용될 때 결과 CSS에 그 내용을 포함합니다. +LESS는 변수, 믹스인, 함수 및 강력한 `@import` 지시어를 추가하는 인기 있는 CSS 전처리기입니다. 컴파일 중에 LESS 엔진은 **`@import`** 문에서 참조된 리소스를 **가져와서** `(inline)` 옵션이 사용될 때 결과 CSS에 그 내용을 포함("인라인")합니다. -응용 프로그램이 **사용자 제어 입력**을 LESS 컴파일러에 의해 나중에 구문 분석되는 문자열에 연결할 때, 공격자는 **임의의 LESS 코드를 주입할 수 있습니다**. `@import (inline)`을 악용하여 공격자는 서버가 다음을 검색하도록 강제할 수 있습니다: +응용 프로그램이 **사용자 제어 입력**을 LESS 컴파일러에 의해 나중에 구문 분석되는 문자열에 연결할 때, 공격자는 **임의의 LESS 코드를 주입**할 수 있습니다. `@import (inline)`을 악용하여 공격자는 서버가 다음을 검색하도록 강제할 수 있습니다: * `file://` 프로토콜을 통한 로컬 파일 (정보 유출 / 로컬 파일 포함). * 내부 네트워크 또는 클라우드 메타데이터 서비스의 원격 리소스 (SSRF). @@ -50,13 +50,13 @@ sed -n 's/.*@@END@@\(.*\)/\1/p' ## Detection * 동적으로 생성된 `.less` 또는 `.css` 응답에서 비정제 쿼리 매개변수를 찾으십시오. -* 코드 검토 중에 LESS 렌더 함수에 전달된 `"@media all { .preview { ... ${userInput} ... } }"`와 같은 구성을 검색하십시오. +* 코드 검토 중에 `"@media all { .preview { ... ${userInput} ... } }"`와 같은 구문이 LESS 렌더 함수에 전달되는지 검색하십시오. * 익스플로잇 시도에는 종종 `@import`, `(inline)`, `file://`, `http://169.254.169.254` 등이 포함됩니다. ## Mitigations * 신뢰할 수 없는 데이터를 LESS 컴파일러에 전달하지 마십시오. -* 동적 값이 필요한 경우, 적절하게 **이스케이프**/정제하십시오 (예: 숫자 토큰으로 제한, 화이트리스트). +* 동적 값이 필요한 경우, 적절하게 **이스케이프**/정화하십시오 (예: 숫자 토큰으로 제한, 화이트리스트). * 가능할 경우 `(inline)` 임포트를 사용할 수 있는 기능을 비활성화하거나 허용된 프로토콜을 `https`로 제한하십시오. * 종속성을 최신 상태로 유지하십시오 – SugarCRM은 13.0.4 및 14.0.1 버전에서 이 문제를 패치했습니다. diff --git a/src/windows-hardening/active-directory-methodology/ad-information-in-printers.md b/src/windows-hardening/active-directory-methodology/ad-information-in-printers.md index ce8bfa6a8..e6b0c866d 100644 --- a/src/windows-hardening/active-directory-methodology/ad-information-in-printers.md +++ b/src/windows-hardening/active-directory-methodology/ad-information-in-printers.md @@ -2,10 +2,10 @@ {{#include ../../banners/hacktricks-training.md}} -인터넷에는 **기본/약한** 로그인 자격 증명으로 LDAP에 구성된 프린터의 위험성을 **강조하는** 여러 블로그가 있습니다. \ -이는 공격자가 **프린터를 속여 악성 LDAP 서버에 인증하도록** 할 수 있기 때문입니다 (일반적으로 `nc -vv -l -p 389` 또는 `slapd -d 2`면 충분합니다) 그리고 프린터의 **자격 증명을 평문으로** 캡처할 수 있습니다. +인터넷에는 **기본/약한** 로그인 자격 증명으로 LDAP에 구성된 프린터의 위험성을 **강조하는 여러 블로그**가 있습니다. \ +이는 공격자가 프린터를 **악성 LDAP 서버에 인증하도록 속일 수 있기 때문입니다** (일반적으로 `nc -vv -l -p 389` 또는 `slapd -d 2`면 충분합니다) 그리고 프린터의 **자격 증명을 평문으로 캡처할 수 있습니다**. -또한, 여러 프린터는 **사용자 이름이 포함된 로그**를 포함하거나 도메인 컨트롤러에서 **모든 사용자 이름을 다운로드**할 수 있습니다. +또한, 여러 프린터는 **사용자 이름이 포함된 로그**를 포함하거나 도메인 컨트롤러에서 **모든 사용자 이름을 다운로드할 수** 있습니다. 이 모든 **민감한 정보**와 일반적인 **보안 부족**은 프린터를 공격자에게 매우 흥미롭게 만듭니다. @@ -18,7 +18,7 @@ ## 프린터 구성 - **위치**: LDAP 서버 목록은 일반적으로 웹 인터페이스에서 찾을 수 있습니다 (예: *Network ➜ LDAP Setting ➜ Setting Up LDAP*). -- **동작**: 많은 임베디드 웹 서버는 **자격 증명을 다시 입력하지 않고도** LDAP 서버 수정을 허용합니다 (사용성 기능 → 보안 위험). +- **동작**: 많은 임베디드 웹 서버는 **자격 증명을 다시 입력하지 않고도 LDAP 서버 수정을 허용합니다** (사용성 기능 → 보안 위험). - **악용**: LDAP 서버 주소를 공격자가 제어하는 호스트로 리디렉션하고 *Test Connection* / *Address Book Sync* 버튼을 사용하여 프린터가 당신에게 바인딩하도록 강제합니다. --- @@ -32,7 +32,7 @@ sudo nc -k -v -l -p 389 # LDAPS → 636 (or 3269) ### 방법 2 – 전체 악성 LDAP 서버 (권장) -많은 장치가 인증하기 *전에* 익명 검색을 수행하기 때문에, 실제 LDAP 데몬을 설정하면 훨씬 더 신뢰할 수 있는 결과를 얻을 수 있습니다: +많은 장치가 인증하기 *전에* 익명 검색을 수행하기 때문에 실제 LDAP 데몬을 설정하면 훨씬 더 신뢰할 수 있는 결과를 얻을 수 있습니다: ```bash # Debian/Ubuntu example sudo apt install slapd ldap-utils @@ -43,7 +43,7 @@ slapd -d 2 -h "ldap:///" # only LDAP, no LDAPS ``` 프린터가 조회를 수행할 때 디버그 출력에서 평문 자격 증명을 볼 수 있습니다. -> 💡 `impacket/examples/ldapd.py` (Python rogue LDAP) 또는 `Responder -w -r -f`를 사용하여 LDAP/SMB를 통해 NTLMv2 해시를 수집할 수도 있습니다. +> 💡 `impacket/examples/ldapd.py` (Python rogue LDAP) 또는 `Responder -w -r -f`를 사용하여 LDAP/SMB를 통해 NTLMv2 해시를 수집할 수 있습니다. --- ## 최근 패스백 취약점 (2024-2025) @@ -52,12 +52,12 @@ slapd -d 2 -h "ldap:///" # only LDAP, no LDAPS ### Xerox VersaLink – CVE-2024-12510 & CVE-2024-12511 -Xerox VersaLink C70xx MFP의 펌웨어 ≤ 57.69.91는 인증된 관리자(또는 기본 자격 증명이 유지될 경우 누구나)가 다음을 수행할 수 있게 했습니다: +Xerox VersaLink C70xx MFP의 펌웨어 ≤ 57.69.91는 인증된 관리자(또는 기본 자격 증명이 남아 있는 경우 누구나)가 다음을 수행할 수 있게 했습니다: * **CVE-2024-12510 – LDAP 패스백**: LDAP 서버 주소를 변경하고 조회를 트리거하여 장치가 구성된 Windows 자격 증명을 공격자가 제어하는 호스트로 유출하게 합니다. -* **CVE-2024-12511 – SMB/FTP 패스백**: *폴더로 스캔* 목적지를 통해 동일한 문제로 NetNTLMv2 또는 FTP 평문 자격 증명이 유출됩니다. +* **CVE-2024-12511 – SMB/FTP 패스백**: *폴더로 스캔* 목적지를 통해 동일한 문제로 NetNTLMv2 또는 FTP 평문 자격 증명을 유출합니다. -간단한 리스너 예: +간단한 리스너는 다음과 같습니다: ```bash sudo nc -k -v -l -p 389 # capture LDAP bind ``` @@ -67,7 +67,7 @@ or a rogue SMB server (`impacket-smbserver`)는 자격 증명을 수집하기에 Canon은 수십 개의 레이저 및 MFP 제품군에서 **SMTP/LDAP 패스백** 취약점을 확인했습니다. 관리 액세스 권한이 있는 공격자는 서버 구성을 수정하고 LDAP **또는** SMTP에 저장된 자격 증명을 검색할 수 있습니다 (많은 조직이 스캔-투-메일을 허용하기 위해 특권 계정을 사용합니다). -제조업체의 지침은 명시적으로 다음을 권장합니다: +제조업체의 지침은 다음과 같이 명시적으로 권장합니다: 1. 가능한 한 빨리 패치된 펌웨어로 업데이트합니다. 2. 강력하고 고유한 관리자 비밀번호를 사용합니다. @@ -81,7 +81,7 @@ Canon은 수십 개의 레이저 및 MFP 제품군에서 **SMTP/LDAP 패스백** | **PRET** (Printer Exploitation Toolkit) | PostScript/PJL/PCL 남용, 파일 시스템 접근, 기본 자격 증명 확인, *SNMP 발견* | `python pret.py 192.168.1.50 pjl` | | **Praeda** | HTTP/HTTPS를 통해 구성 수집 (주소록 및 LDAP 자격 증명 포함) | `perl praeda.pl -t 192.168.1.50` | | **Responder / ntlmrelayx** | SMB/FTP 패스백에서 NetNTLM 해시 캡처 및 중계 | `responder -I eth0 -wrf` | -| **impacket-ldapd.py** | 평문 바인드를 수신하기 위한 경량의 악성 LDAP 서비스 | `python ldapd.py -debug` | +| **impacket-ldapd.py** | 클리어 텍스트 바인드를 수신하기 위한 경량의 악성 LDAP 서비스 | `python ldapd.py -debug` | --- ## 강화 및 탐지 @@ -91,7 +91,7 @@ Canon은 수십 개의 레이저 및 MFP 제품군에서 **SMTP/LDAP 패스백** 3. **관리 액세스 제한** – 프린터 웹/IPP/SNMP 인터페이스를 관리 VLAN에 배치하거나 ACL/VPN 뒤에 두십시오. 4. **사용하지 않는 프로토콜 비활성화** – FTP, Telnet, raw-9100, 구형 SSL 암호. 5. **감사 로깅 활성화** – 일부 장치는 LDAP/SMTP 실패를 syslog할 수 있습니다; 예상치 못한 바인드를 상관관계합니다. -6. **비정상적인 출처에서 평문 LDAP 바인드를 모니터링**합니다 (프린터는 일반적으로 DC와만 통신해야 합니다). +6. **비정상적인 출처에서 클리어 텍스트 LDAP 바인드 모니터링** (프린터는 일반적으로 DC와만 통신해야 합니다). 7. **SNMPv3 또는 SNMP 비활성화** – 커뮤니티 `public`은 종종 장치 및 LDAP 구성을 유출합니다. ---