Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
IOSSecuritySuite — iOS-Plattformsicherheit & Anti-Tampering Swift-Bibliothek | Kitploit
Tools/GitHubGitHub/securing/iossecuritysuite
iOS-SicherheitReverse EngineeringMobile SicherheitLernen & Bildung
GitHubsecuring/iossecuritysuite

IOSSecuritySuite

iOS-Plattformsicherheit & Anti-Tampering Swift-Bibliothek

Repository anzeigen
2.7k344vor 15 TagenVon Kitploit geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen
Webseite

⭐️ Möchten Sie ein zertifizierter iOS Application Security Engineer werden? ⭐️

Schauen Sie sich unseren praktischen & komplett online Kurs an unter: https://courses.securing.pl/courses/iase

iASE logo

ISS Beschreibung

ISS logo

von @_r3ggi

🌏 iOS Security Suite ist eine fortschrittliche und benutzerfreundliche Plattform-Sicherheits- und Anti-Manipulations-Bibliothek, die in reinem Swift geschrieben ist! Wenn Sie für iOS entwickeln und Ihre App gemäß dem OWASP MASVS Standard, Kapitel v8, schützen möchten, dann könnte diese Bibliothek Ihnen viel Zeit sparen. 🚀

Was ISS erkennt:

  • Jailbreak 🧨
  • Angehängter Debugger 👨🏻‍🚀
  • Wenn eine App in einem Emulator ausgeführt wurde 👽
  • Gängige Reverse-Engineering-Tools, die auf dem Gerät laufen 🔭

Einrichtung

Es gibt 4 Möglichkeiten, IOSSecuritySuite zu verwenden

1. Quelle hinzufügen

Fügen Sie die Dateien IOSSecuritySuite/*.swift zu Ihrem Projekt hinzu

2. Einrichtung mit CocoaPods

pod 'IOSSecuritySuite'

3. Einrichtung mit Carthage

github "securing/IOSSecuritySuite"

4. Einrichtung mit Swift Package Manager

root@kitploit:~
.package(url: "https://github.com/securing/IOSSecuritySuite.git", from: "1.5.0")

Info.plist aktualisieren

Nachdem Sie ISS zu Ihrem Projekt hinzugefügt haben, müssen Sie auch Ihre Haupt-Info.plist aktualisieren. Es gibt eine Prüfung im Jailbreak-Erkennungsmodul, die die Methode canOpenURL(_:) verwendet und erfordert, dass die URLs angegeben werden, die abgefragt werden.

root@kitploit:~
<key>LSApplicationQueriesSchemes</key>
<array>
    <string>undecimus</string>
    <string>sileo</string>
    <string>zbra</string>
    <string>filza</string>
</array>

Preisgestaltung

Überprüfen Sie unsere EULA-Lizenz für die Details.

TLDR: Wenn Ihr Unternehmen beschäftigt:

  • 0-99 Personen - kostenlos nutzbar
  • 100-1000 - 3.000 EUR/Jahr
  • 1000+ - 10.000 EUR/Jahr

Wenn Sie ein Modul verkaufen möchten, das die iOS Security Suite verwendet (es wird nicht direkt in Ihrer App verwendet) - 10.000 EUR/Jahr

Hinweis

iOS Security Suite ist für die Verwendung auf iOS/iPadOS vorgesehen. Es sollte nicht auf Macs mit Apple Silicon verwendet werden.

Verwendung

Jailbreak-Erkennungsmodul

  • Die einfachste Methode gibt True/False zurück, wenn Sie nur wissen möchten, ob das Gerät jailbroken oder nicht jailbroken ist
root@kitploit:~
if IOSSecuritySuite.amIJailbroken() {
	print("This device is jailbroken")
} else {
	print("This device is not jailbroken")
}
  • Ausführlich, wenn Sie auch wissen möchten, welche Indikatoren identifiziert wurden
root@kitploit:~
let jailbreakStatus = IOSSecuritySuite.amIJailbrokenWithFailMessage()
if jailbreakStatus.jailbroken {
	print("This device is jailbroken")
	print("Because: \(jailbreakStatus.failMessage)")
} else {
	print("This device is not jailbroken")
}

Die failMessage ist ein String, der durch Kommas getrennte Indikatoren enthält, wie im folgenden Beispiel gezeigt: sileo:// URL-Schema erkannt, Verdächtige Datei existiert: /Library/MobileSubstrate/MobileSubstrate.dylib, Fork konnte einen neuen Prozess erstellen

  • Ausführlich & filterbar, wenn Sie zum Beispiel Geräte identifizieren möchten, die früher jailbroken waren, aber jetzt nicht mehr jailbroken sind
root@kitploit:~
let jailbreakStatus = IOSSecuritySuite.amIJailbrokenWithFailedChecks()
if jailbreakStatus.jailbroken {
   if (jailbreakStatus.failedChecks.contains { $0.check == .existenceOfSuspiciousFiles }) && (jailbreakStatus.failedChecks.contains { $0.check == .suspiciousFilesCanBeOpened }) {
         print("This is real jailbroken device")
   }
}

Debugger-Erkennungsmodul

root@kitploit:~
let amIDebugged: Bool = IOSSecuritySuite.amIDebugged()

Debugger vollständig verweigern

root@kitploit:~
IOSSecuritySuite.denyDebugger()

Emulator-Erkennungsmodul

root@kitploit:~
let runInEmulator: Bool = IOSSecuritySuite.amIRunInEmulator()

Reverse-Engineering-Tools-Erkennungsmodul

  • Die einfachste Methode gibt True/False zurück, wenn Sie nur wissen möchten, ob das Gerät Anzeichen von Reverse Engineering aufweist
root@kitploit:~
if IOSSecuritySuite.amIReverseEngineered() {
  print("This device has evidence of reverse engineering")
} else {
  print("This device hasn't evidence of reverse engineering")
}
  • Ausführlich & filterbar, wenn Sie auch die Liste der durchgeführten Prüfungen möchten
root@kitploit:~
let reverseStatus = IOSSecuritySuite.amIReverseEngineeredWithFailedChecks()
if reverseStatus.reverseEngineered {
   // check for reverseStatus.failedChecks for more details
}

System-Proxy-Erkennungsmodul

Jetzt können Sie auch erkennen, ob eine App mit einem VPN verbunden ist

root@kitploit:~
let amIProxied: Bool = IOSSecuritySuite.amIProxied(considerVPNConnectionAsProxy: true)

Lockdown-Modus-Erkennungsmodul

root@kitploit:~
let amIInLockdownMode: Bool = IOSSecuritySuite.amIInLockdownMode()

Experimentelle Funktionen

Laufzeit-Hook-Erkennungsmodul

root@kitploit:~
let amIRuntimeHooked: Bool = amIRuntimeHook(dyldWhiteList: dylds, detectionClass: SomeClass.self, selector: #selector(SomeClass.someFunction), isClassMethod: false)

Symbol-Hook-Verweigerungsmodul

root@kitploit:~
// If we want to deny symbol hook of Swift function, we have to pass mangled name of that function
denySymbolHook("$s10Foundation5NSLogyySS_s7CVarArg_pdtF")   // denying hooking for the NSLog function
NSLog("Hello Symbol Hook")
     
denySymbolHook("abort") 
abort()

MSHook-Erkennungsmodul

root@kitploit:~
// Function declaration
func someFunction(takes: Int) -> Bool {
	return false
} 

// Defining FunctionType : @convention(thin) indicates a “thin” function reference, which uses the Swift calling convention with no special “self” or “context” parameters.
typealias FunctionType = @convention(thin) (Int) -> (Bool)

// Getting pointer address of function we want to verify
func getSwiftFunctionAddr(_ function: @escaping FunctionType) -> UnsafeMutableRawPointer {
	return unsafeBitCast(function, to: UnsafeMutableRawPointer.self)
}

let funcAddr = getSwiftFunctionAddr(someFunction)
let amIMSHooked = IOSSecuritySuite.amIMSHooked(funcAddr)

MSHook-Verweigerungsmodul

root@kitploit:~
// Function declaration
func denyDebugger(value: Int) {
}

// Defining FunctionType : @convention(thin) indicates a “thin” function reference, which uses the Swift calling convention with no special “self” or “context” parameters.
typealias FunctionType = @convention(thin) (Int)->()

// Getting original function address
let funcDenyDebugger: FunctionType = denyDebugger 
let funcAddr = unsafeBitCast(funcDenyDebugger, to: UnsafeMutableRawPointer.self)


if let originalDenyDebugger = denyMSHook(funcAddr) {
// Call the original function with 1337 as Int argument
     unsafeBitCast(originalDenyDebugger, to: FunctionType.self)(1337)
 } else {
     denyDebugger()
 }

Dateiintegritätsprüfungsmodul

root@kitploit:~
// Determine if application has been tampered with 
if IOSSecuritySuite.amITampered([.bundleID("biz.securing.FrameworkClientApp"),
    .mobileProvision("2976c70b56e9ae1e2c8e8b231bf6b0cff12bbbd0a593f21846d9a004dd181be3"),
    .machO("IOSSecuritySuite", "6d8d460b9a4ee6c0f378e30f137cebaf2ce12bf31a2eef3729c36889158aa7fc")]).result {
    print("I have been Tampered.")
}
else {
    print("I have not been Tampered.")
}

// Manually verify SHA256 hash value of a loaded dylib
if let hashValue = IOSSecuritySuite.getMachOFileHashValue(.custom("IOSSecuritySuite")), hashValue == "6d8d460b9a4ee6c0f378e30f137cebaf2ce12bf31a2eef3729c36889158aa7fc" {
    print("I have not been Tampered.")
}
else {
    print("I have been Tampered.")
}
 
// Check SHA256 hash value of the main executable
// Tip: Your application may retrieve this value from the server
if let hashValue = IOSSecuritySuite.getMachOFileHashValue(.default), hashValue == "your-application-executable-hash-value" {
    print("I have not been Tampered.")
}
else {
    print("I have been Tampered.")
}

Haltepunkt-Erkennungsmodul

root@kitploit:~
func denyDebugger() {
    // Set breakpoint here
}
     
typealias FunctionType = @convention(thin) ()->()
let func_denyDebugger: FunctionType = denyDebugger   // `: FunctionType` is a must
let func_addr = unsafeBitCast(func_denyDebugger, to: UnsafeMutableRawPointer.self)
let hasBreakpoint = IOSSecuritySuite.hasBreakpointAt(func_addr, functionSize: nil)

if hasBreakpoint {
    print("Breakpoint found in the specified function")
} else {
    print("Breakpoint not found in the specified function")
}

Überwachungspunkt-Erkennungsmodul

root@kitploit:~
// Set a breakpoint at the testWatchpoint function
func testWatchpoint() -> Bool{
		// lldb: watchpoint set expression ptr
    var ptr = malloc(9)
    // lldb: watchpoint set variable count
    var count = 3
    return IOSSecuritySuite.hasWatchpoint()
}

Sicherheitshinweise

Bevor Sie dieses und andere Plattform-Sicherheitsprüfungen verwenden, müssen Sie verstehen, dass:

  • Die Einbindung dieses Tools in Ihr Projekt ist nicht das Einzige, was Sie tun sollten, um die Sicherheit Ihrer App zu verbessern! Sie können ein allgemeines Whitepaper zur mobilen Sicherheit hier lesen.
  • Die Erkennung, ob ein Gerät jailbroken ist, erfolgt lokal auf dem Gerät. Das bedeutet, dass jeder Jailbreak-Detektor umgangen werden kann (auch dieser)!
  • Swift-Code gilt als schwieriger dynamisch zu manipulieren als Objective-C. Da diese Bibliothek in reinem Swift geschrieben wurde, sollten die IOSSecuritySuite-Methoden nicht dem Objective-C-Laufzeitsystem ausgesetzt sein (was die Umgehung erschwert ✅). Sie müssen wissen, dass ein Angreifer dennoch in der Lage ist, MSHookFunction/MSFindSymbol auf Swift-Symbole anzuwenden und den Ausführungsfluss von Swift-Code dynamisch zu ändern.

Beitrag ❤️

Ja, bitte! Wenn Sie eine bessere Idee haben oder dieses Projekt einfach verbessern möchten, schreiben Sie mir bitte auf Twitter oder LinkedIn. Pull-Requests sind mehr als willkommen!

Besonderer Dank: 👏🏻

  • kubajakowski für den Hinweis auf das Problem mit der Methode canOpenURL(_:)
  • olbartek für Code-Review und Pull-Request
  • benbahrenburg für verschiedene ISS-Verbesserungen
  • fotiDim für das Hinzufügen neuer Dateipfade zur Überprüfung
  • gcharita für das Hinzufügen der Swift Package Manager Unterstützung
  • rynaardb für die Erstellung der Methode amIJailbrokenWithFailedChecks()
  • undeaDD für verschiedene ISS-Verbesserungen
  • fnxpt für das Hinzufügen mehrerer JB-Erkennungen
  • TannerJin für die MSHook-, RuntimeHook-, SymbolHook- und Watchpoint-Erkennungsmodule
  • NikoXu für das Hinzufügen des Dateiintegritätsmoduls
  • hellpf für die Behebung eines Problems mit einem hängenden Socket
  • Ant-tree für die Verbesserung der Hooking-Resistenz
  • izmcm für die Implementierung der Methode amIReverseEngineeredWithFailedChecks()
  • sanu für die Bereitstellung neuer Dateiprüfungen
  • marsepu für einen gut gemachten PR mit neuen Verbesserungen
  • mkj-is für einen PR zur Verbesserung der ISS-Leistung 🚄

TODO

  • Recherche zur Erkennung von Installer5 und Zebra Package Manager (Cydia-Alternativen)
  • Dopamine hidejb Detektor

Lizenz

Siehe die LICENSE-Datei.

Referenzen

Während der Erstellung dieses Tools habe ich Folgendes verwendet:

  • 🔗 https://github.com/TheSwiftyCoder/JailBreak-Detection
  • 🔗 https://github.com/abhinashjain/jailbreakdetection
  • 🔗 https://gist.github.com/ddrccw/8412847
  • 🔗 https://gist.github.com/bugaevc/4307eaf045e4b4264d8e395b5878a63b
  • 📚 "iOS Application Security" von David Thiel
Tool herunterladen
  • LongXiangGuo für einen PR zum Hinzufügen des Datenschutz-Manifests
  • Coeur für ISS-Verbesserungen und Fehlerbehebungen
  • Adobels für die Anpassung von ISS an die neuen Anforderungen von Apple