• Stars
    star
    127
  • Rank 282,790 (Top 6 %)
  • Language
    Dart
  • License
    MIT License
  • Created about 5 years ago
  • Updated over 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Apple Content Cache Reverse Engineering

Apple Cache

This is a reverse engineering attempt of the Apple Content Caching system.

The goal of this project is to challenge myself in a serious reverse engineering attempt while also creating something I want to make: an Apple Content Cache that works on Linux servers.

NOTE: asset-cache-tool is a continuation of some of this work.

A Note to Apple

Dear Apple,

I am a good faith actor and due to the design of cache, I do not believe this should cause any harm. Should you consider otherwise, contact me via my email: [email protected]

Thanks, Alex

A Note to Users

Please do not abuse the content you see here. I am trying to do this in good faith and do not condone any malicious use of the Apple Content Cache system, whatever that may be.

Content Caching

Content Caching is available in the Sharing section of System Preferences. It is used to cache content on your local network for public Apple content or iCloud content. The /usr/libexec/AssetCache/AssetCache is responsible for a majority of the work. It has an HTTP server that has an API that allows fetching and uploading of content from the server.

Research

Additionally, packet captures are provided in the captures directory.

Methodology

The work here was done by using Charles Proxy and Frida.

The tools/frida-ssl-pin.js file is a Frida script that can attach to any macOS process and disable all SSL verification and SSL certificate pinning. This has allowed me to deeply examine the requests going to Apple's servers. This script is likely useful for many other use cases. If anyone else uses it, I'd love to hear about how it was used (I'm a super huge nerd and am quite interested in reverse engineering). Note that SIP will need to be disabled in order to correctly use it.

I also have a modified Frida Python script which targets launchd to inject the SSL pinning and verification disable script. Since AssetCache is spawned by launchd, you can attach Frida to launchd, and wait spawn AssetCache via the service. The script is located at: tools/frida-ssl-pin-target.py, just do pip3 install frida frida-tools and run the script.

More Repositories

1

MacHack

Hidden Tools in macOS
664
star
2

virtual

Linux Virtual Machines on macOS
Swift
262
star
3

jolk

macOS System Executable Analyzer
Swift
15
star
4

asset-cache-tool

Apple Asset Cache (Content Cache) Tools
Swift
11
star
5

canned-mac

macOS in a can
Swift
10
star
6

apple-open-source

Toolkit for Apple Open Source
Swift
7
star
7

dart-dev-guides

Development Guides for Dart Project Developers (Runtime/SDK)
7
star
8

metalgpu

View Metal GPU information from the command-line.
Swift
5
star
9

chromeget

Chrome OS Package Manager
JavaScript
5
star
10

diavirt

Do-It-All Virtualization Tool
Swift
5
star
11

mac-ipsw-watcher

Auto-download and archive macOS restore images using Virtualization.framework
Swift
5
star
12

Puma

iOS Jailbreak Toolkit in Kotlin
Kotlin
5
star
13

apk-tools

APK Tools in Kotlin
Kotlin
4
star
14

minecraft.dart

Base Minecraft API
Dart
4
star
15

apple-tools

Apple Scripts
Swift
3
star
16

GroovyForge

Forge Library for Groovy Developers
Groovy
3
star
17

yaml2json

Dart YAML2JSON Converter
Dart
2
star
18

enclave

Secure Enclave CLI
Swift
2
star
19

apple-encrypted-dns

Encrypted DNS Profiles Signed by Me
2
star
20

graveyard

DirectCode Graveyard
Groovy
1
star
21

linguist-js

Linguist Port to JavaScript
1
star
22

homebrew-tools

Homebrew Tools
Ruby
1
star
23

GroovyLamp

Updated version of https://code.google.com/p/groovy-lamp/
Java
1
star
24

german

Stuff for German
1
star
25

atom-dart

IDE-like support for Dart in Atom (Currently alpha)
CoffeeScript
1
star
26

turing-rado

Turing Machine based on Tibor RadΓ³ card design.
Kotlin
1
star
27

BallSimulationUWP

Ball Simulation in UWP
C#
1
star
28

KMenuBar

Kotlin Menu Bar DSL
Kotlin
1
star
29

chalice

Scratch-Made Kubernetes Cluster
1
star
30

bashsupport

Java
1
star