
IOSSecuritySuite v2.3.0
iOS प्लेटफ़ॉर्म सुरक्षा और छेड़छाड़-रोधी Swift लाइब्रेरी
⭐️ क्या आप प्रमाणित iOS एप्लीकेशन सिक्योरिटी इंजीनियर बनना चाहते हैं? ⭐️
हमारा व्यावहारिक और पूरी तरह से ऑनलाइन कोर्स देखें: https://courses.securing.pl/courses/iase

ISS विवरण

@_r3ggi द्वारा
🌏 iOS Security Suite एक उन्नत और उपयोग में आसान प्लेटफ़ॉर्म सुरक्षा और एंटी-टैम्परिंग लाइब्रेरी है जो पूरी तरह Swift में लिखी गई है! यदि आप iOS के लिए डेवलपमेंट कर रहे हैं और OWASP MASVS मानक, अध्याय v8 के अनुसार अपने ऐप को सुरक्षित रखना चाहते हैं, तो यह लाइब्रेरी आपका बहुत समय बचा सकती है। 🚀
ISS क्या पता लगाता है:
- जेलब्रेक 🧨
- संलग्न डीबगर 👨🏻🚀
- क्या ऐप एमुलेटर में चलाया गया 👽
- डिवाइस पर चल रहे सामान्य रिवर्स इंजीनियरिंग टूल 🔭
सेटअप
IOSSecuritySuite का उपयोग शुरू करने के 4 तरीके हैं
1. स्रोत जोड़ें
अपने प्रोजेक्ट में IOSSecuritySuite/*.swift फ़ाइलें जोड़ें
2. CocoaPods के साथ सेटअप
pod 'IOSSecuritySuite'
3. Carthage के साथ सेटअप
github "securing/IOSSecuritySuite"
4. Swift Package Manager के साथ सेटअप
.package(url: "https://github.com/securing/IOSSecuritySuite.git", from: "1.5.0")
Info.plist अपडेट करें
अपने प्रोजेक्ट में ISS जोड़ने के बाद, आपको अपनी मुख्य Info.plist को भी अपडेट करना होगा। जेलब्रेक डिटेक्शन मॉड्यूल में एक जाँच है जो canOpenURL(_:) विधि का उपयोग करती है और आवश्यकता है उन URLs को निर्दिष्ट करने की जो क्वेरी की जाएंगी।
<key>LSApplicationQueriesSchemes</key>
<array>
<string>undecimus</string>
<string>sileo</string>
<string>zbra</string>
<string>filza</string>
</array>
मूल्य निर्धारण
विवरण के लिए हमारा EULA लाइसेंस देखें।
TLDR: यदि आपकी कंपनी में कार्यरत हैं:
- 0-99 लोग - उपयोग करने के लिए मुफ्त
- 100-1000 - 3k EUR/वर्ष
- 1000+ - 10k EUR/वर्ष
यदि आप iOS Security Suite का उपयोग करने वाला एक मॉड्यूल बेचना चाहते हैं (जो सीधे आपके ऐप में उपयोग नहीं किया गया है) - 10k EUR/वर्ष
सूचना
iOS Security Suite का उपयोग iOS/iPadOS पर किया जाना है। इसे Apple Silicon वाले Macs पर उपयोग नहीं किया जाना चाहिए।
उपयोग कैसे करें
जेलब्रेक डिटेक्टर मॉड्यूल
- सबसे सरल विधि True/False लौटाती है यदि आप केवल यह जानना चाहते हैं कि डिवाइस जेलब्रोकन है या जेल्ड
if IOSSecuritySuite.amIJailbroken() {
print("यह डिवाइस जेलब्रोकन है")
} else {
print("यह डिवाइस जेलब्रोकन नहीं है")
}
- विस्तृत, यदि आप यह भी जानना चाहते हैं कि कौन से संकेतक पहचाने गए
let jailbreakStatus = IOSSecuritySuite.amIJailbrokenWithFailMessage()
if jailbreakStatus.jailbroken {
print("यह डिवाइस जेलब्रोकन है")
print("क्योंकि: \(jailbreakStatus.failMessage)")
} else {
print("यह डिवाइस जेलब्रोकन नहीं है")
}
फेलमैसेज एक स्ट्रिंग है जिसमें अल्पविराम से अलग किए गए संकेतक होते हैं जैसा कि नीचे दिए गए उदाहरण में दिखाया गया है:
sileo:// URL scheme detected, Suspicious file exists: /Library/MobileSubstrate/MobileSubstrate.dylib, Fork was able to create a new process
- विस्तृत और फ़िल्टरेबल, यदि आप उदाहरण के लिए उन डिवाइसों की पहचान करना चाहते हैं जो पहले जेलब्रोकन थे लेकिन अब जेल्ड हैं
let jailbreakStatus = IOSSecuritySuite.amIJailbrokenWithFailedChecks()
if jailbreakStatus.jailbroken {
if (jailbreakStatus.failedChecks.contains { $0.check == .existenceOfSuspiciousFiles }) && (jailbreakStatus.failedChecks.contains { $0.check == .suspiciousFilesCanBeOpened }) {
print("यह वास्तविक जेलब्रोकन डिवाइस है")
}
}
डीबगर डिटेक्टर मॉड्यूल
let amIDebugged: Bool = IOSSecuritySuite.amIDebugged()
डीबगर को पूरी तरह से अस्वीकार करें
IOSSecuritySuite.denyDebugger()
एमुलेटर डिटेक्टर मॉड्यूल
let runInEmulator: Bool = IOSSecuritySuite.amIRunInEmulator()
रिवर्स इंजीनियरिंग टूल डिटेक्टर मॉड्यूल
- सबसे सरल विधि True/False लौटाती है यदि आप केवल यह जानना चाहते हैं कि डिवाइस पर रिवर्स इंजीनियरिंग के सबूत हैं
if IOSSecuritySuite.amIReverseEngineered() {
print("इस डिवाइस पर रिवर्स इंजीनियरिंग के सबूत हैं")
} else {
print("इस डिवाइस पर रिवर्स इंजीनियरिंग के सबूत नहीं हैं")
}
- विस्तृत और फ़िल्टरेबल, यदि आप की गई जाँचों की सूची भी चाहते हैं
let reverseStatus = IOSSecuritySuite.amIReverseEngineeredWithFailedChecks()
if reverseStatus.reverseEngineered {
// अधिक जानकारी के लिए reverseStatus.failedChecks देखें
}
सिस्टम प्रॉक्सी डिटेक्टर मॉड्यूल
अब आप यह भी पता लगा सकते हैं कि कोई ऐप VPN से कनेक्ट है या नहीं
let amIProxied: Bool = IOSSecuritySuite.amIProxied(considerVPNConnectionAsProxy: true)
लॉकडाउन मोड डिटेक्टर मॉड्यूल
let amIInLockdownMode: Bool = IOSSecuritySuite.amIInLockdownMode()
प्रायोगिक सुविधाएँ
रनटाइम हुक डिटेक्टर मॉड्यूल
let amIRuntimeHooked: Bool = amIRuntimeHook(dyldWhiteList: dylds, detectionClass: SomeClass.self, selector: #selector(SomeClass.someFunction), isClassMethod: false)
सिंबल हुक अस्वीकृति मॉड्यूल
// यदि हम Swift फ़ंक्शन के सिंबल हुक को अस्वीकार करना चाहते हैं, तो हमें उस फ़ंक्शन का मैंगल्ड नाम पास करना होगा
denySymbolHook("$s10Foundation5NSLogyySS_s7CVarArg_pdtF") // NSLog फ़ंक्शन के लिए हुकिंग अस्वीकार करना
NSLog("Hello Symbol Hook")
denySymbolHook("abort")
abort()
MSHook डिटेक्टर मॉड्यूल
// फ़ंक्शन घोषणा
func someFunction(takes: Int) -> Bool {
return false
}
// FunctionType परिभाषित करना : @convention(thin) एक "पतले" फ़ंक्शन संदर्भ को इंगित करता है, जो बिना किसी विशेष "self" या "context" पैरामीटर के Swift कॉलिंग कन्वेंशन का उपयोग करता है।
typealias FunctionType = @convention(thin) (Int) -> (Bool)
// उस फ़ंक्शन का पॉइंटर पता प्राप्त करना जिसे हम सत्यापित करना चाहते हैं
func getSwiftFunctionAddr(_ function: @escaping FunctionType) -> UnsafeMutableRawPointer {
return unsafeBitCast(function, to: UnsafeMutableRawPointer.self)
}
let funcAddr = getSwiftFunctionAddr(someFunction)
let amIMSHooked = IOSSecuritySuite.amIMSHooked(funcAddr)
MSHook अस्वीकृति मॉड्यूल
// फ़ंक्शन घोषणा
func denyDebugger(value: Int) {
}
// FunctionType परिभाषित करना : @convention(thin) एक "पतले" फ़ंक्शन संदर्भ को इंगित करता है, जो बिना किसी विशेष "self" या "context" पैरामीटर के Swift कॉलिंग कन्वेंशन का उपयोग करता है।
typealias FunctionType = @convention(thin) (Int)->()
// मूल फ़ंक्शन का पता प्राप्त करना
let funcDenyDebugger: FunctionType = denyDebugger
let funcAddr = unsafeBitCast(funcDenyDebugger, to: UnsafeMutableRawPointer.self)
if let originalDenyDebugger = denyMSHook(funcAddr) {
// मूल फ़ंक्शन को 1337 Int आर्गुमेंट के साथ कॉल करें
unsafeBitCast(originalDenyDebugger, to: FunctionType.self)(1337)
} else {
denyDebugger()
}
फ़ाइल अखंडता सत्यापनकर्ता मॉड्यूल
// निर्धारित करें कि एप्लिकेशन के साथ छेड़छाड़ की गई है या नहीं
if IOSSecuritySuite.amITampered([.bundleID("biz.securing.FrameworkClientApp"),
.mobileProvision("2976c70b56e9ae1e2c8e8b231bf6b0cff12bbbd0a593f21846d9a004dd181be3"),
.machO("IOSSecuritySuite", "6d8d460b9a4ee6c0f378e30f137cebaf2ce12bf31a2eef3729c36889158aa7fc")]).result {
print("मेरे साथ छेड़छाड़ की गई है।")
}
else {
print("मेरे साथ छेड़छाड़ नहीं की गई है।")
}