diff --git a/INTEGRATION.md b/INTEGRATION.md
new file mode 100644
index 0000000..2263814
--- /dev/null
+++ b/INTEGRATION.md
@@ -0,0 +1,144 @@
+# friTap Integration Guide
+
+This guide explains how to use the `friTap` as a Python library to hook into applications, log SSL/TLS data, and manage its integration with the `AndroidFridaManager`. The only required argument to initialize `friTap` is the app package name to be hooked.
+
+---
+
+## Basic Usage: Hooking an App and Logging SSL/TLS Data
+
+The following example demonstrates how to use `friTap` to hook into an application and log its SSL/TLS traffic.
+
+### **Code Example**
+
+```python
+from friTap import SSL_Logger
+import sys
+
+try:
+ print("Start logging")
+ print("Press Ctrl+C to stop logging")
+
+ # Specify the app package to hook
+ app_package = "YouTube"
+
+ # Initialize SSL_Logger with optional arguments
+ ssl_log = SSL_Logger(
+ app_package,
+ verbose=True, # Enable verbose output
+ mobile=True, # Indicate that the target app is running on a mobile device
+ keylog="keylogtest3.log", # Path to save SSL key log
+ debug_output=True # Enable debug output
+ )
+
+ # Start friTap session
+ process = ssl_log.start_fritap_session()
+
+ # Wait for user input to stop
+ sys.stdin.read()
+
+except KeyboardInterrupt:
+ # Detach process on interruption
+ process.detach()
+ print("Logging stopped.")
+```
+
+---
+
+## Arguments for `SSL_Logger`
+
+| Argument | Type | Default | Description |
+|-------------------------|---------|--------------|-----------------------------------------------------------------------------|
+| `app` | `str` | **Required** | The package name of the app to be hooked. |
+| `pcap_name` | `str` | `None` | Name of the PCAP file to save captured traffic. |
+| `verbose` | `bool` | `False` | Enable verbose output for debugging purposes. |
+| `spawn` | `bool` | `False` | Spawn the app automatically if not running. |
+| `keylog` | `str` | `None` | Path to save the SSL/TLS key log file. |
+| `enable_spawn_gating` | `bool` | `False` | Enable gating for app spawning. |
+| `mobile` | `bool` | `False` | Indicate whether the target app is on a mobile device. |
+| `live` | `bool` | `False` | Enable live monitoring of the app's traffic. |
+| `environment_file` | `str` | `None` | Path to the environment configuration file. |
+| `debug_mode` | `bool` | `False` | Enable debugging mode for more detailed information. |
+| `full_capture` | `bool` | `False` | Enable full capture of traffic. |
+| `socket_trace` | `bool` | `False` | Enable tracing of socket connections. |
+| `host` | `bool` | `False` | Indicate whether the app is running on a host machine. |
+| `offsets` | `str` | `None` | Specify custom offsets for hooking. |
+| `debug_output` | `bool` | `False` | Enable debug output for detailed logging. |
+| `experimental` | `bool` | `False` | Enable experimental features. |
+| `anti_root` | `bool` | `False` | Enable anti-root detection mechanisms. |
+| `payload_modification` | `bool` | `False` | Enable payload modification during traffic capture. |
+| `enable_default_fd` | `bool` | `False` | Enable default file descriptor handling. |
+| `patterns` | `list` | `None` | List of patterns to match during traffic capture. |
+| `custom_hook_script` | `str` | `None` | Path to a custom Frida hook script to be executed during the session. |
+
+---
+
+## Advanced Usage: Using friTap as a Job in AndroidFridaManager
+
+friTap can also be used as a job within the `AndroidFridaManager` framework. This allows you to manage friTap sessions as part of a larger job workflow.
+
+### **Code Example**
+
+```python
+from friTap import SSL_Logger
+from AndroidFridaManager import JobManager
+import sys
+
+try:
+ print("Start logging")
+ print("Press Ctrl+C to stop logging")
+
+ # Initialize JobManager
+ job_manager = JobManager()
+
+ # Specify app package
+ app_package = "YouTube"
+
+ # Initialize SSL_Logger with optional arguments
+ ssl_log = SSL_Logger(
+ app_package,
+ verbose=True, # Enable verbose output
+ keylog="keylogtest3.log", # Path to save SSL key log
+ debug_output=True # Enable debug output
+ )
+
+ # Get the Frida script path from SSL_Logger
+ frida_script_path = ssl_log.get_fritap_frida_script_path()
+
+ # Set up the Frida session in the JobManager
+ job_manager.setup_frida_session(
+ app_package,
+ ssl_log.on_fritap_message,
+ should_spawn=False # Do not spawn the process
+ )
+
+ # Start the job with a custom hooking handler
+ job_manager.start_job(
+ frida_script_path,
+ custom_hooking_handler_name=ssl_log.on_fritap_message
+ )
+
+ print("[*] Running jobs:", job_manager.running_jobs())
+
+ # Wait for user input to stop
+ sys.stdin.read()
+
+except KeyboardInterrupt:
+ # Stop all running jobs
+ job_manager.stop_jobs()
+ print("Jobs stopped.")
+```
+
+---
+
+## Key Notes
+
+1. **App Package Name**:
+ - The app package name is the only required argument to initialize `SSL_Logger`. All other arguments are optional but provide additional functionality like saving key logs or enabling debug output.
+
+2. **Custom Hooks**:
+ - If you want to execute custom Frida scripts, specify the path using the `custom_hook_script` argument in `SSL_Logger`.
+
+3. **Integration with AndroidFridaManager**:
+ - Using friTap as part of `AndroidFridaManager` allows you to manage friTap hooks alongside other Frida jobs seamlessly.
+
+---
diff --git a/README.md b/README.md
index ef2a1bc..7db62ae 100644
--- a/README.md
+++ b/README.md
@@ -3,7 +3,7 @@
# friTap
-![version](https://img.shields.io/badge/version-1.2.3.6-blue) [![PyPI version](https://d25lcipzij17d.cloudfront.net/badge.svg?id=py&r=r&ts=1683906897&type=6e&v=1.2.3.6&x2=0)](https://badge.fury.io/py/friTap)
+![version](https://img.shields.io/badge/version-1.2.4.0-blue) [![PyPI version](https://d25lcipzij17d.cloudfront.net/badge.svg?id=py&r=r&ts=1683906897&type=6e&v=1.2.4.0&x2=0)](https://badge.fury.io/py/friTap)
The goal of this project is to help researchers to analyze traffic encapsulated in SSL or TLS. For details have a view into the [OSDFCon webinar slides](assets/friTapOSDFConwebinar.pdf) or in [this blog post](https://lolcads.github.io/posts/2022/08/fritap/).
@@ -47,8 +47,13 @@ $ which friTap
$ sudo -E /home/daniel/.local/bin/friTap
```
+friTap can also be used as a Python library within your project:
+```python
+from friTap import SSL_Logger
+```
+For more details on integrating friTap into your Python project, check out the [INTEGRATION.md](./INTEGRATION.md) guide.
-
+friTap allows you to enhance its functionality by providing a custom Frida script during your session. To do so, use the `-c` parameter ([more](./USAGE.md#Using-friTap-with-a-custom-Frida-scripts)).
More examples on using friTap can be found in the [USAGE.md](./USAGE.md). A detailed introduction using friTap on Android is under [EXAMPLE.md](./EXAMPLE.md) as well.
## Hooking Libraries Without Symbols
diff --git a/USAGE.md b/USAGE.md
index 6f3add2..204be78 100644
--- a/USAGE.md
+++ b/USAGE.md
@@ -201,4 +201,64 @@ This category hooks the SSL_Write function, which is responsible for writing enc
}
```
Primary Pattern: Hook the SSL_Write function.
- Fallback Pattern: If the primary pattern fails, the fallback pattern is tried.
\ No newline at end of file
+ Fallback Pattern: If the primary pattern fails, the fallback pattern is tried.
+
+
+
+## Using friTap with a custom Frida scripts
+
+This guide explains how to use friTap with a custom Frida script to enhance its functionality. Using the `-c` parameter, you can specify a custom script to be executed during the friTap session.
+
+---
+
+### Example Command
+
+To invoke friTap with a custom script, use the following command:
+
+```bash
+fritap -m -k cronet18.keys -do -c "/path/to/custom.js" -v YouTube
+```
+
+### **Explanation of Parameters**
+- `-m`: Indicates that the app is running on a mobile device.
+- `-k`: Specifies the output file for the SSL key log.
+- `-do`: Enables debug output for detailed logging.
+- `-c`: Specifies the path to the custom Frida script to be executed.
+- `-v`: Enables verbose logging.
+- `YouTube`: The name of the app package to be hooked.
+
+---
+
+### Custom Script Example
+
+The following is an example of a custom Frida script (`custom.js`) that iterates over all loaded modules, checks for exports containing `ssl` or `tls`, and sends relevant information to friTap.
+
+```javascript
+/*
+ * Example code for using custom hooks in friTap.
+ * To ensure friTap prints content, include a "custom" field in your message payload.
+ * The value of this "custom" field will be displayed by friTap.
+ */
+
+// Iterate over all loaded modules
+Process.enumerateModules().forEach(module => {
+ // Enumerate exports for each module
+ module.enumerateExports().forEach(exp => {
+ // Check if the export name contains "ssl" or "tls"
+ if (exp.name.toLowerCase().includes("ssl") || exp.name.toLowerCase().includes("tls")) {
+ // Send the result to Python
+ send({
+ custom: `Found export: ${exp.name} in module: ${module.name} at address: ${exp.address}`
+ });
+ }
+ });
+});
+```
+friTap will print any messages sent with a `custom` field during execution.
+You can download the above example code as `custom.js` file using the link below:
+
+**[Download custom.js](./custom.js)**
+
+Place this file in the same directory as your friTap installation or provide the absolute path to the `-c` parameter.
+
+
diff --git a/agent/shared/shared_functions.ts b/agent/shared/shared_functions.ts
index 625ffdc..b4f73d2 100644
--- a/agent/shared/shared_functions.ts
+++ b/agent/shared/shared_functions.ts
@@ -71,6 +71,26 @@ export function getModuleNames(){
return moduleNames;
}
+export function checkNumberOfExports(moduleName: string): number {
+ try {
+ // Get the module by name
+ const module = Process.getModuleByName(moduleName);
+
+ // Enumerate exports of the module
+ const exports = module.enumerateExports();
+
+ // Get the number of exports
+ const numberOfExports = exports.length;
+
+ // Log the result
+ devlog(`The module "${moduleName}" has ${numberOfExports} exports.`);
+ return numberOfExports;
+ } catch (error) {
+ devlog(`Error checking exports for module "${moduleName}": ${error}`);
+ return -1;
+ }
+}
+
export function readAddresses(moduleName: string, library_method_mapping: { [key: string]: Array }): { [library_name: string]: { [functionName: string]: NativePointer } } {
const resolver = new ApiResolver("module");
const addresses: { [library_name: string]: { [functionName: string]: NativePointer } } = {};
diff --git a/agent/ssl_lib/openssl_boringssl.ts b/agent/ssl_lib/openssl_boringssl.ts
index 64f9380..45cf1dc 100644
--- a/agent/ssl_lib/openssl_boringssl.ts
+++ b/agent/ssl_lib/openssl_boringssl.ts
@@ -1,4 +1,4 @@
-import { readAddresses, getPortsAndAddresses, getBaseAddress, isSymbolAvailable } from "../shared/shared_functions.js";
+import { readAddresses, getPortsAndAddresses, getBaseAddress, isSymbolAvailable, checkNumberOfExports } from "../shared/shared_functions.js";
import { getOffsets, offsets, enable_default_fd } from "../ssl_log.js";
import { devlog, log } from "../util/log.js";
@@ -94,7 +94,9 @@ export class OpenSSL_BoringSSL {
if(typeof passed_library_method_mapping !== 'undefined'){
this.library_method_mapping = passed_library_method_mapping;
}else{
- this.library_method_mapping[`*${moduleName}*`] = ["SSL_read", "SSL_write", "SSL_get_fd", "SSL_get_session", "SSL_SESSION_get_id", "SSL_new", "SSL_CTX_set_keylog_callback"]
+ if(checkNumberOfExports(moduleName) > 2 ){
+ this.library_method_mapping[`*${moduleName}*`] = ["SSL_read", "SSL_write", "SSL_get_fd", "SSL_get_session", "SSL_SESSION_get_id", "SSL_new", "SSL_CTX_set_keylog_callback"]
+ }
this.library_method_mapping[`*${socket_library}*`] = ["getpeername", "getsockname", "ntohs", "ntohl"]
}
diff --git a/custom.js b/custom.js
new file mode 100644
index 0000000..711f38d
--- /dev/null
+++ b/custom.js
@@ -0,0 +1,19 @@
+/*
+ * Example code for using custom hooks in friTap.
+ * To ensure friTap prints content, include a "custom" field in your message payload.
+ * The value of this "custom" field will be displayed by friTap.
+ */
+
+// Iterate over all loaded modules
+Process.enumerateModules().forEach(module => {
+ // Enumerate exports for each module
+ module.enumerateExports().forEach(exp => {
+ // Check if the export name contains "ssl" or "tls" || exp.name.toLowerCase().includes("tls")
+ if (exp.name.toLowerCase().includes("ssl") ) {
+ // Send the result to Python
+ send({
+ custom: `Found export: ${exp.name} in module: ${module.name} at address: ${exp.address}`
+ });
+ }
+ });
+});
diff --git a/friTap/__init__.py b/friTap/__init__.py
index 56fafa5..ef51c0a 100755
--- a/friTap/__init__.py
+++ b/friTap/__init__.py
@@ -1,2 +1,5 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
+
+# Expose SSL_Logger at the package level
+from .friTap import SSL_Logger
\ No newline at end of file
diff --git a/friTap/_ssl_log.js b/friTap/_ssl_log.js
index 67c6ab7..97e1f9b 100644
--- a/friTap/_ssl_log.js
+++ b/friTap/_ssl_log.js
@@ -61,8 +61,8 @@
2619 /agent/macos/openssl_boringssl_macos.js
7608 /agent/shared/pattern_based_hooking.js.map
10664 /agent/shared/pattern_based_hooking.js
-10234 /agent/shared/shared_functions.js.map
-12861 /agent/shared/shared_functions.js
+10665 /agent/shared/shared_functions.js.map
+13463 /agent/shared/shared_functions.js
397 /agent/shared/shared_structures.js.map
201 /agent/shared/shared_structures.js
2864 /agent/ssl_lib/cronet.js.map
@@ -81,8 +81,8 @@
3954 /agent/ssl_lib/monobtls.js
31291 /agent/ssl_lib/nss.js.map
52013 /agent/ssl_lib/nss.js
-13147 /agent/ssl_lib/openssl_boringssl.js.map
-15836 /agent/ssl_lib/openssl_boringssl.js
+13213 /agent/ssl_lib/openssl_boringssl.js.map
+15932 /agent/ssl_lib/openssl_boringssl.js
5279 /agent/ssl_lib/s2ntls.js.map
6545 /agent/ssl_lib/s2ntls.js
4770 /agent/ssl_lib/wolfssl.js.map
@@ -2115,7 +2115,7 @@ export class PatternBasedHooking {
}
}
✄
-{"version":3,"file":"shared_functions.js","sourceRoot":"/Users/danielbaier/research/projects/github/issues/2024 fritap issues/friTap/","sources":["agent/shared/shared_functions.ts"],"names":[],"mappings":"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"}
+{"version":3,"file":"shared_functions.js","sourceRoot":"/Users/danielbaier/research/projects/github/issues/2024 fritap issues/friTap/","sources":["agent/shared/shared_functions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC3D,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAqB,MAAM,wBAAwB,CAAC;AAG9E,SAAS,uBAAuB,CAAC,WAAmB;IAChD,IAAI,eAAe,GAAG,CAAC,CAAC;IACxB,IAAI,aAAa,GAAG,MAAM,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;IACxD,IAAG,aAAa,KAAK,IAAI,IAAI,aAAa,KAAK,IAAI,EAAC;QAChD,GAAG,CAAC,cAAc,GAAC,eAAe,GAAC,mCAAmC,GAAC,WAAW,CAAC,CAAC;QACpF,UAAU,CAAC,uBAAuB,EAAC,eAAe,CAAC,CAAA;KACtD;AACL,CAAC;AAED;;;;;GAKG;AAEH,MAAM,UAAU,kBAAkB,CAAC,cAAsB,EAAE,sBAA0E,EAAE,WAA0B,EAAG,YAAoB,EAAE,YAAqB;IAC3M,KAAI,IAAI,GAAG,IAAI,sBAAsB,CAAC,cAAc,CAAC,EAAC;QAClD,IAAI,KAAK,GAAG,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;QAC9B,IAAI,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAA;QACjB,KAAI,IAAI,MAAM,IAAI,WAAW,EAAC;YAC1B,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,EAAC;gBACnB,IAAG;oBACC,GAAG,CAAC,GAAG,MAAM,8BAA8B,YAAY,GAAG,CAAC,CAAA;oBAC3D,IAAI;wBACA,MAAM,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;qBACpC;oBAAA,OAAM,KAAK,EAAC;wBACT,uBAAuB,CAAC,MAAM,CAAC,CAAC;qBACnC;oBAED,kIAAkI;oBAClI,IAAI,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;iBAE9B;gBAAA,OAAO,KAAK,EAAE;oBACX,YAAY,CAAC,0BAA0B,MAAM,EAAE,CAAC,CAAA;oBAChD,+GAA+G;oBAC/G,YAAY,CAAC,gBAAgB,GAAC,KAAK,CAAC,CAAA;oBACpC,+EAA+E;iBAClF;aAEJ;SACJ;KACJ;AAEL,CAAC;AAID,MAAM,UAAU,gBAAgB;IAC5B,IAAI,WAAW,GAAkB,cAAc,EAAE,CAAA;IACjD,QAAO,OAAO,CAAC,QAAQ,EAAC;QACpB,KAAK,OAAO;YACR,OAAO,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAA;QACnE,KAAK,SAAS;YACV,OAAO,YAAY,CAAA;QACvB,KAAK,QAAQ;YACT,OAAO,mBAAmB,CAAA;QAC9B;YACI,GAAG,CAAC,aAAa,OAAO,CAAC,QAAQ,2BAA2B,CAAC,CAAA;YAC7D,OAAO,EAAE,CAAA;KAChB;AACL,CAAC;AAED,MAAM,UAAU,cAAc;IAC1B,IAAI,WAAW,GAAkB,EAAE,CAAA;IACnC,OAAO,CAAC,gBAAgB,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;IACvE,OAAO,WAAW,CAAC;AACvB,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,UAAkB;IACnD,IAAI;QACA,yBAAyB;QACzB,MAAM,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;QAEnD,kCAAkC;QAClC,MAAM,OAAO,GAAG,MAAM,CAAC,gBAAgB,EAAE,CAAC;QAE1C,4BAA4B;QAC5B,MAAM,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC;QAEvC,iBAAiB;QACjB,MAAM,CAAC,eAAe,UAAU,SAAS,eAAe,WAAW,CAAC,CAAC;QACrE,OAAO,eAAe,CAAC;KAC1B;IAAC,OAAO,KAAK,EAAE;QACZ,MAAM,CAAC,sCAAsC,UAAU,MAAM,KAAK,EAAE,CAAC,CAAC;QACtE,OAAO,CAAC,CAAC,CAAC;KACb;AACL,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,UAAkB,EAAE,sBAAwD;IACtG,MAAM,QAAQ,GAAG,IAAI,WAAW,CAAC,QAAQ,CAAC,CAAC;IAC3C,MAAM,SAAS,GAA0E,EAAE,CAAC;IAE5F,iFAAiF;IACjF,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE;QACxB,SAAS,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC;KAC9B;IAED,KAAK,MAAM,YAAY,IAAI,sBAAsB,EAAE;QAC/C,sBAAsB,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,UAAU,MAAM;YACzD,MAAM,OAAO,GAAG,QAAQ,CAAC,gBAAgB,CAAC,UAAU,GAAG,YAAY,GAAG,GAAG,GAAG,MAAM,CAAC,CAAC;YACpF,IAAI,YAAY,GAAG,CAAC,CAAC;YACrB,IAAI,WAAW,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;YAEpC,IAAI,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,EAAE,8DAA8D;gBAC3F,WAAW,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC,EAAE,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;aAClE;YAED,IAAG,CAAC,OAAO,IAAI,OAAO,KAAK,IAAI,EAAC;gBAC5B,MAAM,CAAC,0DAA0D,YAAY,IAAI,MAAM,EAAE,CAAC,CAAC;gBAC3F,OAAM;aACT;YAED,IAAI,OAAO,CAAC,MAAM,IAAI,CAAC,EAAE;gBACrB,MAAM,iBAAiB,GAAG,YAAY,GAAG,GAAG,GAAG,MAAM,CAAC;aACzD;iBAAM,IAAI,OAAO,CAAC,MAAM,IAAI,CAAC,EAAE;gBAC5B,MAAM,CAAC,QAAQ,GAAG,MAAM,GAAG,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;aACxD;iBAAM;gBACH,uEAAuE;gBACvE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;oBACrC,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE;wBACvC,YAAY,GAAG,CAAC,CAAC;wBACjB,MAAM,CAAC,QAAQ,GAAG,MAAM,GAAG,GAAG,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,CAAC;wBAChE,MAAM;qBACT;iBACJ;aACJ;YAED,SAAS,CAAC,UAAU,CAAC,CAAC,WAAW,CAAC,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC;QACvE,CAAC,CAAC,CAAC;KACN;IAED,OAAO,SAAS,CAAC;AACrB,CAAC;AAID;;;;;GAKG;AACF,MAAM,UAAU,cAAc,CAAC,UAAkB,EAAE,sBAAwD;IACxG,IAAI,QAAQ,GAAG,IAAI,WAAW,CAAC,QAAQ,CAAC,CAAC;IACzC,IAAI,SAAS,GAA0E,EAAE,CAAC;IAG1F,mFAAmF;IACnF,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE;QACxB,SAAS,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC;KAC9B;IAED,KAAK,IAAI,YAAY,IAAI,sBAAsB,EAAE;QAE7C,sBAAsB,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,UAAU,MAAM;YACzD,IAAI,OAAO,GAAG,QAAQ,CAAC,gBAAgB,CAAC,UAAU,GAAG,YAAY,GAAG,GAAG,GAAG,MAAM,CAAC,CAAC;YAClF,IAAI,YAAY,GAAG,CAAC,CAAC;YACrB,IAAI,WAAW,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;YAEpC,IAAI,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,EAAE,8DAA8D;gBAC3F,WAAW,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC,EAAE,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;aAClE;YAED,IAAI,OAAO,CAAC,MAAM,IAAI,CAAC,EAAE;gBACrB,MAAM,iBAAiB,GAAG,YAAY,GAAG,GAAG,GAAG,MAAM,CAAC;aACzD;iBAAM,IAAI,OAAO,CAAC,MAAM,IAAI,CAAC,EAAE;gBAC5B,MAAM,CAAC,QAAQ,GAAG,MAAM,GAAG,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;aACxD;iBAAM;gBACH,uEAAuE;gBACvE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;oBACrC,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE;wBACvC,YAAY,GAAG,CAAC,CAAC;wBACjB,MAAM,CAAC,QAAQ,GAAG,MAAM,GAAG,GAAG,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,CAAC;wBAChE,MAAM;qBACT;iBACJ;aACJ;YAED,SAAS,CAAC,UAAU,CAAC,CAAC,WAAW,CAAC,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC;QACvE,CAAC,CAAC,CAAC;KACN;IAED,OAAO,SAAS,CAAC;AACrB,CAAC;AAID;;;;GAIG;AACF,MAAM,UAAU,cAAc,CAAC,UAAkB;IAC9C,MAAM,CAAC,kBAAkB,GAAC,UAAU,CAAC,CAAC;IACtC,MAAM,OAAO,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAA;IAE1C,KAAI,MAAM,MAAM,IAAI,OAAO,EAAC;QACxB,IAAG,MAAM,CAAC,IAAI,IAAI,UAAU,EAAC;YACzB,OAAO,MAAM,CAAC,IAAI,CAAC;SACtB;KACJ;IAED,OAAO,IAAI,CAAC;AAChB,CAAC;AAGD;;;;;;;;;EASE;AACF,MAAM,UAAU,oBAAoB,CAAC,MAAc,EAAE,MAAe,EAAE,eAAiD,EAAE,iBAA2B;IAEhJ,IAAI,OAAO,GAAuC,EAAE,CAAA;IACpD,IAAI,iBAAiB,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,EAAC;QAElC,OAAO,CAAC,KAAK,GAAG,OAAO,CAAC,GAAG,IAAI,CAAA;QAC/B,OAAO,CAAC,KAAK,GAAG,OAAO,CAAC,GAAG,WAAW,CAAA;QACtC,OAAO,CAAC,KAAK,GAAG,OAAO,CAAC,GAAG,IAAI,CAAA;QAC/B,OAAO,CAAC,KAAK,GAAG,OAAO,CAAC,GAAG,WAAW,CAAA;QACtC,OAAO,CAAC,WAAW,CAAC,GAAG,SAAS,CAAA;QAEhC,OAAO,OAAO,CAAA;KACjB;IAED,IAAI,WAAW,GAAG,IAAI,cAAc,CAAC,eAAe,CAAC,aAAa,CAAC,EAAE,KAAK,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC,CAAA;IAC1G,IAAI,WAAW,GAAG,IAAI,cAAc,CAAC,eAAe,CAAC,aAAa,CAAC,EAAE,KAAK,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC,CAAA;IAC1G,IAAI,KAAK,GAAG,IAAI,cAAc,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAA;IAC9E,IAAI,KAAK,GAAG,IAAI,cAAc,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAA;IAE9E,IAAI,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;IAC7B,IAAI,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IAC5B,IAAI,OAAO,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;IAC5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QACrC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAA;QACrB,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,KAAK,MAAM,EAAE;YAClC,MAAM,CAAC,KAAK,CAAC,CAAA;YACb,WAAW,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,CAAA;SACrC;aACI;YACD,MAAM,CAAC,KAAK,CAAC,CAAA;YACb,WAAW,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,CAAA;SACrC;QACD,IAAI,IAAI,CAAC,OAAO,EAAE,IAAI,OAAO,EAAE;YAC3B,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAW,CAAA;YACtE,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAW,CAAA;YACtE,OAAO,CAAC,WAAW,CAAC,GAAG,SAAS,CAAA;SACnC;aAAM,IAAI,IAAI,CAAC,OAAO,EAAE,IAAI,QAAQ,EAAE;YACnC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAW,CAAA;YACtE,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,GAAG,EAAE,CAAA;YAClC,IAAI,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;YAC3B,KAAK,IAAI,MAAM,GAAG,CAAC,EAAE,MAAM,GAAG,EAAE,EAAE,MAAM,IAAI,CAAC,EAAE;gBAC3C,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,GAAG,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;aAChH;YACD,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,0BAA0B,CAAC,KAAK,CAAC,EAAE;gBACpF,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,CAAW,CAAA;gBAC5E,OAAO,CAAC,WAAW,CAAC,GAAG,SAAS,CAAA;aACnC;iBACI;gBACD,OAAO,CAAC,WAAW,CAAC,GAAG,UAAU,CAAA;aACpC;SACJ;aAAM;YACH,MAAM,CAAC,4CAA4C,GAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAA;YACnE,MAAM,wBAAwB,CAAA;SACjC;KACJ;IACD,OAAO,OAAO,CAAA;AAClB,CAAC;AAID;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAAC,SAAc;IAC5C,OAAO,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,IAAY;QAC/C,OAAO,CAAC,GAAG,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACxD,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;AACf,CAAC;AAED,MAAM,UAAU,WAAW,CAAE,SAAc;IACvC,MAAM,SAAS,GAAQ,EAAE,CAAC;IAE1B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,IAAI,EAAE,EAAE,CAAC,EAAC;QAC3B,MAAM,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QACjD,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;KAC5B;IACD,OAAO,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAC3B,IAAI,UAAU,CAAC,SAAS,CAAC,EACzB,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CACpB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACb,CAAC;AAEH;;;;GAIG;AACH,MAAM,UAAU,2BAA2B,CAAC,SAAc;IACtD,IAAI,MAAM,GAAG,EAAE,CAAA;IACf,IAAI,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAA;IACtD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,EAAE;QACxD,MAAM,IAAI,CAAC,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;KACpF;IACD,OAAO,MAAM,CAAA;AACjB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAAC,SAAc;IAC5C,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QACvC,KAAK,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;KACjD;IACD,OAAO,KAAK,CAAC;AACjB,CAAC;AACD;;;;;GAKG;AACH,MAAM,UAAU,YAAY,CAAC,QAAsB,EAAE,SAAiB;IAClE,IAAI,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAA;IACvC,IAAI,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE,KAAK,CAAC,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAA;IAC7E,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,CAAA;IACzB,OAAO,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;AAC9B,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAAC,UAAkB,EAAE,UAAkB;IACpE,MAAM,QAAQ,GAAG,IAAI,WAAW,CAAC,QAAQ,CAAC,CAAC;IAC3C,MAAM,OAAO,GAAG,QAAQ,CAAC,gBAAgB,CAAC,UAAU,GAAG,UAAU,GAAG,GAAG,GAAG,UAAU,CAAC,CAAC;IACtF,wCAAwC;IAExC,IAAG,OAAO,EAAC;QACP,OAAO,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;KAC7B;SAAI;QACD,OAAO,KAAK,CAAC;KAChB;AAGL,CAAC;AAGD,qFAAqF;AACrF,MAAM,UAAU,qBAAqB,CAAC,IAAyD;IAC3F,OAAO,CAAC,UAAkB,EAAE,YAAqB,EAAE,EAAE;QACjD,IAAI,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;IACnC,CAAC,CAAC;AACN,CAAC;AAGD,MAAM,UAAU,8BAA8B,CAAC,OAAiC;IAC5E,OAAO,KAAK;SACP,IAAI,CAAC,IAAI,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,qDAAqD;SACnF,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,4CAA4C;SAC1G,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,uCAAuC;AAC1D,CAAC"}
✄
import { log, devlog, devlog_error } from "../util/log.js";
import { AF_INET, AF_INET6 } from "./shared_structures.js";
@@ -2179,6 +2179,23 @@ export function getModuleNames() {
Process.enumerateModules().forEach(item => moduleNames.push(item.name));
return moduleNames;
}
+export function checkNumberOfExports(moduleName) {
+ try {
+ // Get the module by name
+ const module = Process.getModuleByName(moduleName);
+ // Enumerate exports of the module
+ const exports = module.enumerateExports();
+ // Get the number of exports
+ const numberOfExports = exports.length;
+ // Log the result
+ devlog(`The module "${moduleName}" has ${numberOfExports} exports.`);
+ return numberOfExports;
+ }
+ catch (error) {
+ devlog(`Error checking exports for module "${moduleName}": ${error}`);
+ return -1;
+ }
+}
export function readAddresses(moduleName, library_method_mapping) {
const resolver = new ApiResolver("module");
const addresses = {};
@@ -4380,9 +4397,9 @@ NSS.secret_callback = new NativeCallback(function (sslSocketFD, epoch, dir, secr
return;
}, "void", ["pointer", "uint16", "uint16", "pointer", "pointer"]);
✄
-{"version":3,"file":"openssl_boringssl.js","sourceRoot":"/Users/danielbaier/research/projects/github/issues/2024 fritap issues/friTap/","sources":["agent/ssl_lib/openssl_boringssl.ts"],"names":[],"mappings":"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"}
+{"version":3,"file":"openssl_boringssl.js","sourceRoot":"/Users/danielbaier/research/projects/github/issues/2024 fritap issues/friTap/","sources":["agent/ssl_lib/openssl_boringssl.ts"],"names":[],"mappings":"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"}
✄
-import { readAddresses, getPortsAndAddresses, getBaseAddress, isSymbolAvailable } from "../shared/shared_functions.js";
+import { readAddresses, getPortsAndAddresses, getBaseAddress, isSymbolAvailable, checkNumberOfExports } from "../shared/shared_functions.js";
import { offsets, enable_default_fd } from "../ssl_log.js";
import { devlog, log } from "../util/log.js";
class ModifyReceiver {
@@ -4443,7 +4460,9 @@ export class OpenSSL_BoringSSL {
this.library_method_mapping = passed_library_method_mapping;
}
else {
- this.library_method_mapping[`*${moduleName}*`] = ["SSL_read", "SSL_write", "SSL_get_fd", "SSL_get_session", "SSL_SESSION_get_id", "SSL_new", "SSL_CTX_set_keylog_callback"];
+ if (checkNumberOfExports(moduleName) > 2) {
+ this.library_method_mapping[`*${moduleName}*`] = ["SSL_read", "SSL_write", "SSL_get_fd", "SSL_get_session", "SSL_SESSION_get_id", "SSL_new", "SSL_CTX_set_keylog_callback"];
+ }
this.library_method_mapping[`*${socket_library}*`] = ["getpeername", "getsockname", "ntohs", "ntohl"];
}
// Check and add SSL_read_ex if available
diff --git a/friTap/about.py b/friTap/about.py
index c2ad42f..51aa56d 100644
--- a/friTap/about.py
+++ b/friTap/about.py
@@ -2,5 +2,5 @@
# -*- coding: utf-8 -*-
__author__ = "Daniel Baier, Francois Egner, Max Ufer"
-__version__ = "1.2.3.6"
+__version__ = "1.2.4.0"
debug = False # are we running in debug mode?
\ No newline at end of file
diff --git a/friTap/friTap.py b/friTap/friTap.py
index 2b3c376..39edd1d 100755
--- a/friTap/friTap.py
+++ b/friTap/friTap.py
@@ -25,15 +25,6 @@ def write_debug_frida_file(debug_script_version):
-'''
-def running_hooks(script="custom_hooks.js"):
- run_custom_hooks(script)
- start_fritap_hooks()
-'''
-
-
-
-
class ArgParser(argparse.ArgumentParser):
def error(self, message):
print("friTap v" + __version__)
@@ -57,6 +48,7 @@ def main():
%(prog)s -m -p ssl.pcap com.example.app
%(prog)s -m --pcap log.pcap --verbose com.example.app
%(prog)s -m -k keys.log -v -s com.example.app
+ %(prog)s -m -k keys.log -v -c -s com.example.app
%(prog)s -m --patterns pattern.json -k keys.log -s com.google.android.youtube
%(prog)s --pcap log.pcap "$(which curl) https://www.google.com"
%(prog)s -H --pcap log.pcap 192.168.0.1:1234 com.example.app
@@ -70,6 +62,8 @@ def main():
const=True, default=False, help="Attach to a process on android or iOS")
args.add_argument("-H", "--host", metavar="", required=False,
help="Attach to a process on remote frida device")
+ args.add_argument("-c", "--custom_script", metavar="", required=False,
+ help="Path to the custom Frida script that will be executed prior to applying the friTap hooks.")
args.add_argument("-d", "--debug", required=False, action="store_const", const=True,
help="Set friTap into debug mode this include debug output as well as a listening Chrome Inspector server for remote debugging.")
args.add_argument("-do", "--debugoutput", required=False, action="store_const", const=True,
@@ -120,7 +114,7 @@ def main():
print("Start logging")
print("Press Ctrl+C to stop logging")
ssl_log = SSL_Logger(parsed.exec, parsed.pcap, parsed.verbose,
- parsed.spawn, parsed.keylog, parsed.enable_spawn_gating, parsed.mobile, parsed.live, parsed.environment, parsed.debug, parsed.full_capture, parsed.socket_tracing, parsed.host, parsed.offsets, parsed.debugoutput, parsed.experimental, parsed.anti_root, parsed.payload_modification, parsed.enable_default_fd, parsed.patterns)
+ parsed.spawn, parsed.keylog, parsed.enable_spawn_gating, parsed.mobile, parsed.live, parsed.environment, parsed.debug, parsed.full_capture, parsed.socket_tracing, parsed.host, parsed.offsets, parsed.debugoutput, parsed.experimental, parsed.anti_root, parsed.payload_modification, parsed.enable_default_fd, parsed.patterns, parsed.custom_script)
process = ssl_log.start_fritap_session()
diff --git a/friTap/ssl_logger.py b/friTap/ssl_logger.py
index e35318d..ac1b2b0 100644
--- a/friTap/ssl_logger.py
+++ b/friTap/ssl_logger.py
@@ -31,7 +31,7 @@
class SSL_Logger():
- def __init__(self, app, pcap_name=None, verbose=False, spawn=False, keylog=False, enable_spawn_gating=False, mobile=False, live=False, environment_file=None, debug_mode=False,full_capture=False, socket_trace=False, host=False, offsets=None, debug_output=False, experimental=False, anti_root=False, payload_modification=False,enable_default_fd=False, patterns=None):
+ def __init__(self, app, pcap_name=None, verbose=False, spawn=False, keylog=False, enable_spawn_gating=False, mobile=False, live=False, environment_file=None, debug_mode=False,full_capture=False, socket_trace=False, host=False, offsets=None, debug_output=False, experimental=False, anti_root=False, payload_modification=False,enable_default_fd=False, patterns=None, custom_hook_script=None):
self.debug = debug_mode
self.anti_root = anti_root
self.pcap_name = pcap_name
@@ -53,6 +53,7 @@ def __init__(self, app, pcap_name=None, verbose=False, spawn=False, keylog=False
self.payload_modification = payload_modification
self.enable_default_fd = enable_default_fd
self.experimental = experimental
+ self.custom_hook_script = custom_hook_script
self.script = None
self.tmpdir = None
@@ -64,20 +65,53 @@ def __init__(self, app, pcap_name=None, verbose=False, spawn=False, keylog=False
self.keylog_file = None
self.patterns = patterns
- self.pattern_data = None
+ self.pattern_data = None
+ self.keydump_Set = {*()}
+ self.traced_Socket_Set = {*()}
+ self.traced_scapy_socket_Set = {*()}
+
+ self.init_fritap()
+
+
+ def init_fritap(self):
if frida.__version__ < "16":
self.frida_agent_script = "_ssl_log_legacy.js"
else:
self.frida_agent_script = "_ssl_log.js"
-
- if self.debug_output:
- print("[***] loading frida script: " + self.frida_agent_script)
- self.keydump_Set = {*()}
- self.traced_Socket_Set = {*()}
- self.traced_scapy_socket_Set = {*()}
-
+ if self.pcap_name:
+ self.pcap_obj = PCAP(self.pcap_name,SSL_READ,SSL_WRITE,self.full_capture, self.mobile,self.debug)
+
+ if self.offsets is not None:
+ if os.path.exists(self.offsets):
+ offset_file = open(self.offsets, "r")
+ self.offsets_data = offset_file.read()
+ offset_file.close()
+ else:
+ try:
+ json.load(self.offsets)
+ self.offsets_data = self.offsets
+ except ValueError as e:
+ print(f"Log error, defaulting to auto-detection: {e}")
+
+ if self.patterns is not None:
+ self.load_patterns()
+
+ if self.keylog:
+ self.keylog_file = open(self.keylog, "w")
+
+ if self.live:
+ if self.pcap_name:
+ print("[*] YOU ARE TRYING TO WRITE A PCAP AND HAVING A LIVE VIEW\nTHIS IS NOT SUPPORTED!\nWHEN YOU DO A LIVE VIEW YOU CAN SAFE YOUR CAPUTRE WITH WIRESHARK.")
+ fifo_file = self.temp_fifo()
+ print(f'[*] friTap live view on Wireshark')
+ print(f'[*] Created named pipe for Wireshark live view to {fifo_file}')
+ print(
+ f'[*] Now open this named pipe with Wireshark in another terminal: sudo wireshark -k -i {fifo_file}')
+ print(f'[*] friTap will continue after the named pipe is ready....\n')
+ self.pcap_obj = PCAP(fifo_file,SSL_READ,SSL_WRITE,self.full_capture, self.mobile,self.debug)
+
def on_detach(self, reason):
if reason != "application-requested":
@@ -206,6 +240,25 @@ def on_fritap_message(self,job, message, data):
self.traced_scapy_socket_Set.add(scapy_filter)
+
+ def on_custom_hook_message(self, message, data):
+ """
+ This handler is used to print the messages from the provided custom hooks
+ """
+
+ if message["type"] == "error":
+ pprint.pprint(message)
+ os.kill(os.getpid(), signal.SIGTERM)
+ return
+
+ custom_hook_payload = message["payload"]
+ if not "custom" in custom_hook_payload:
+ return
+
+ print("[+] custom hook: "+custom_hook_payload["custom"])
+
+
+
def on_child_added(self, child):
print(f"[*] Attached to child process with pid {child.pid}")
self.instrument(self.device.attach(child.pid))
@@ -230,7 +283,14 @@ def instrument(self, process):
print("[!] Open Chrome with chrome://inspect for debugging\n")
runtime="v8"
+ if self.custom_hook_script is not None:
+ custom_script_string = self.get_custom_frida_script()
+ if self.debug_output:
+ print("[***] loading custom frida script: " + self.custom_hook_script)
+
script_string = self.get_fritap_frida_script()
+ if self.debug_output:
+ print("[***] loading friTap frida script: " + self.frida_agent_script)
if self.offsets_data is not None:
@@ -239,7 +299,13 @@ def instrument(self, process):
if self.pattern_data is not None:
print(f"[*] Using pattern provided by pattern.json for hooking")
-
+
+
+ if self.custom_hook_script is not None:
+ self.custom_script = process.create_script(custom_script_string, runtime=runtime)
+ self.custom_script.on("message", self.on_custom_hook_message)
+ self.custom_script.load()
+
self.script = process.create_script(script_string, runtime=runtime)
@@ -314,6 +380,7 @@ def start_fritap_session(self):
else:
self.device = frida.get_local_device()
+ """
if self.offsets is not None:
if os.path.exists(self.offsets):
offset_file = open(self.offsets, "r")
@@ -328,6 +395,7 @@ def start_fritap_session(self):
if self.patterns is not None:
self.load_patterns()
+ """
self.device.on("child_added", self.on_child_added)
@@ -337,8 +405,8 @@ def start_fritap_session(self):
if self.spawn:
print("spawning "+ self.target_app)
- if self.pcap_name:
- self.pcap_obj = PCAP(self.pcap_name,SSL_READ,SSL_WRITE,self.full_capture, self.mobile,self.debug)
+ #if self.pcap_name:
+ # self.pcap_obj = PCAP(self.pcap_name,SSL_READ,SSL_WRITE,self.full_capture, self.mobile,self.debug)
if self.mobile or self.host:
pid = self.device.spawn(self.target_app)
@@ -352,10 +420,11 @@ def start_fritap_session(self):
time.sleep(1) # without it Java.perform silently fails
self.process = self.device.attach(pid)
else:
- if self.pcap_name:
- self.pcap_obj = PCAP(self.pcap_name,SSL_READ,SSL_WRITE,self.full_capture, self.mobile,self.debug)
+ #if self.pcap_name:
+ # self.pcap_obj = PCAP(self.pcap_name,SSL_READ,SSL_WRITE,self.full_capture, self.mobile,self.debug)
self.process = self.device.attach(int(self.target_app) if self.target_app.isnumeric() else self.target_app)
+ """
if self.live:
if self.pcap_name:
print("[*] YOU ARE TRYING TO WRITE A PCAP AND HAVING A LIVE VIEW\nTHIS IS NOT SUPPORTED!\nWHEN YOU DO A LIVE VIEW YOU CAN SAFE YOUR CAPUTRE WITH WIRESHARK.")
@@ -370,6 +439,7 @@ def start_fritap_session(self):
if self.keylog:
self.keylog_file = open(self.keylog, "w")
+ """
self.instrument(self.process)
@@ -401,6 +471,10 @@ def wrapped_handler(message, data):
self.on_fritap_message(None, message, data)
return wrapped_handler
+
+
+ def set_keylog_file(self, keylog_name):
+ self.keylog_file = open(keylog_name, "w")
def pcap_cleanup(self, is_full_capture, is_mobile, pcap_name):
@@ -449,6 +523,12 @@ def get_fritap_frida_script(self):
return script_string
+ def get_custom_frida_script(self):
+ with open(os.path.join(here, self.custom_hook_script), encoding='utf-8', newline='\n') as f:
+ script_string = f.read()
+ return script_string
+
+
def get_fritap_frida_script_path(self):
return os.path.join(os.path.dirname(__file__), self.frida_agent_script)
diff --git a/package.json b/package.json
index 78f1a76..2bd37dd 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "friTap",
- "version": "1.2.3.6",
+ "version": "1.2.4.0",
"description": "Frida agent for logging SSL traffic as plaintext and extracting SSL keys",
"private": true,
"main": "agent/ssl_log.ts",