Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
IOSSecuritySuite — مكتبة سويفت لأمان منصة iOS ومكافحة العبث | Kitploit
أدوات/GitHubGitHub/securing/iossecuritysuite
أمان iOSالهندسة العكسيةأمن الجوالالتعلم والتعليم
GitHubsecuring/iossecuritysuite

IOSSecuritySuite

مكتبة سويفت لأمان منصة iOS ومكافحة العبث

عرض المستودعالموقع الإلكتروني
2.7k344منذ 15 أيامتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة

⭐️ هل ترغب في أن تصبح مهندس أمان معتمد لتطبيقات iOS؟ ⭐️

اطلع على دورتنا العملية والكامله عبر الإنترنت على: https://courses.securing.pl/courses/iase

شعار iASE

وصف ISS

شعار ISS

بواسطة @_r3ggi

🌏 iOS Security Suite هي مكتبة أمان منصة متقدمة وسهلة الاستخدام لمكافحة التلاعب، مكتوبة بلغة Swift النقية! إذا كنت تطور لتطبيقات iOS وتريد حماية تطبيقك وفقًا لمعيار OWASP MASVS، الفصل v8، فإن هذه المكتبة قد توفر لك الكثير من الوقت. 🚀

ما يكشفه ISS:

  • كسر الحماية (Jailbreak) 🧨
  • مصحح أخطاء متصل 👨🏻‍🚀
  • إذا تم تشغيل تطبيق في محاكٍ 👽
  • أدوات الهندسة العكسية الشائعة قيد التشغيل على الجهاز 🔭

الإعداد

هناك 4 طرق يمكنك بها البدء في استخدام IOSSecuritySuite

1. إضافة المصدر

أضف ملفات IOSSecuritySuite/*.swift إلى مشروعك

2. الإعداد باستخدام CocoaPods

pod 'IOSSecuritySuite'

3. الإعداد باستخدام Carthage

github "securing/IOSSecuritySuite"

4. الإعداد باستخدام Swift Package Manager

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

تحديث Info.plist

بعد إضافة ISS إلى مشروعك، ستحتاج أيضًا إلى تحديث ملف Info.plist الرئيسي. يوجد فحص في وحدة كشف كسر الحماية يستخدم طريقة canOpenURL(_:) ويتطلب تحديد عناوين URL التي سيتم الاستعلام عنها.

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

التسعير

تحقق من ترخيص EULA الخاص بنا للحصول على التفاصيل.

TLDR: إذا كانت شركتك توظف:

  • 0-99 شخصًا - مجاني الاستخدام
  • 100-1000 - 3000 يورو/السنة
  • 1000+ - 10000 يورو/السنة

إذا كنت ترغب في بيع وحدة تستخدم iOS Security Suite (لا تُستخدم مباشرة في تطبيقك) - 10000 يورو/السنة

ملاحظة

iOS Security Suite مخصص للاستخدام على iOS/iPadOS. لا ينبغي استخدامه على أجهزة Mac بمعالجات Apple Silicon.

كيفية الاستخدام

وحدة كشف كسر الحماية

  • الطريقة الأبسط ترجع True/False إذا كنت تريد فقط معرفة ما إذا كان الجهاز مكسور الحماية أم لا.
root@kitploit:~
if IOSSecuritySuite.amIJailbroken() {
	print("هذا الجهاز مكسور الحماية")
} else {
	print("هذا الجهاز ليس مكسور الحماية")
}
  • مفصلة، إذا كنت تريد أيضًا معرفة المؤشرات التي تم تحديدها
root@kitploit:~
let jailbreakStatus = IOSSecuritySuite.amIJailbrokenWithFailMessage()
if jailbreakStatus.jailbroken {
	print("هذا الجهاز مكسور الحماية")
	print("لأن: \(jailbreakStatus.failMessage)")
} else {
	print("هذا الجهاز ليس مكسور الحماية")
}

failMessage هو نص يحتوي على مؤشرات مفصولة بفواصل كما هو موضح في المثال أدناه: sileo:// تم اكتشاف مخطط URL، ملف مشبوه موجود: /Library/MobileSubstrate/MobileSubstrate.dylib، تمكن Fork من إنشاء عملية جديدة

  • مفصلة وقابلة للتصفية، إذا كنت تريد مثلاً تحديد الأجهزة التي كانت مكسورة الحماية في الماضي ولكنها الآن محصورة
root@kitploit:~
let jailbreakStatus = IOSSecuritySuite.amIJailbrokenWithFailedChecks()
if jailbreakStatus.jailbroken {
   if (jailbreakStatus.failedChecks.contains { $0.check == .existenceOfSuspiciousFiles }) && (jailbreakStatus.failedChecks.contains { $0.check == .suspiciousFilesCanBeOpened }) {
         print("هذا جهاز مكسور الحماية حقيقي")
   }
}

وحدة كشف المصحح

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

منع المصحح تمامًا

root@kitploit:~
IOSSecuritySuite.denyDebugger()

وحدة كشف المحاكي

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

وحدة كشف أدوات الهندسة العكسية

  • الطريقة الأبسط ترجع True/False إذا كنت تريد فقط معرفة ما إذا كان الجهاز يحتوي على دليل على الهندسة العكسية
root@kitploit:~
if IOSSecuritySuite.amIReverseEngineered() {
  print("هذا الجهاز يحتوي على دليل على الهندسة العكسية")
} else {
  print("هذا الجهاز لا يحتوي على دليل على الهندسة العكسية")
}
  • مفصلة وقابلة للتصفية، إذا كنت تريد أيضًا قائمة الفحوصات التي تمت
root@kitploit:~
let reverseStatus = IOSSecuritySuite.amIReverseEngineeredWithFailedChecks()
if reverseStatus.reverseEngineered {
   // تحقق من reverseStatus.failedChecks لمزيد من التفاصيل
}

وحدة كشف البروكسي للنظام

يمكنك الآن أيضًا اكتشاف ما إذا كان التطبيق متصلاً بشبكة VPN

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

وحدة كشف وضع الإغلاق (Lockdown Mode)

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

الميزات التجريبية

وحدة كشف خطافات وقت التشغيل

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

وحدة منع خطافات الرموز

root@kitploit:~
// إذا أردنا منع خطاف رمز لدالة Swift، يجب تمرير الاسم المُشَوَّه (mangled name) لتلك الدالة
denySymbolHook("$s10Foundation5NSLogyySS_s7CVarArg_pdtF")   // منع خطاف الدالة NSLog
NSLog("Hello Symbol Hook")
     
denySymbolHook("abort") 
abort()

وحدة كشف MSHook

root@kitploit:~
// تعريف الدالة
func someFunction(takes: Int) -> Bool {
	return false
} 

// تعريف FunctionType : @convention(thin) يشير إلى مرجع دالة "رفيع" يستخدم اصطلاح استدعاء Swift بدون معاملات "self" أو "context" خاصة.
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

root@kitploit:~
// تعريف الدالة
func denyDebugger(value: Int) {
}

// تعريف FunctionType : @convention(thin) يشير إلى مرجع دالة "رفيع"
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()
 }

وحدة التحقق من سلامة الملفات

root@kitploit:~
// تحديد ما إذا كان التطبيق قد تم التلاعب به
if IOSSecuritySuite.amITampered([.bundleID("biz.securing.FrameworkClientApp"),
    .mobileProvision("2976c70b56e9ae1e2c8e8b231bf6b0cff12bbbd0a593f21846d9a004dd181be3"),
    .machO("IOSSecuritySuite", "6d8d460b9a4ee6c0f378e30f137cebaf2ce12bf31a2eef3729c36889158aa7fc")]).result {
    print("لقد تم التلاعب بي.")
}
else {
    print("لم يتم التلاعب بي.")
}

// التحقق يدويًا من قيمة تجزئة SHA256 لمكتبة dylib محملة
if let hashValue = IOSSecuritySuite.getMachOFileHashValue(.custom("IOSSecuritySuite")), hashValue == "6d8d460b9a4ee6c0f378e30f137cebaf2ce12bf31a2eef3729c36889158aa7fc" {
    print("لم يتم التلاعب بي.")
}
else {
    print("لقد تم التلاعب بي.")
}
 
// التحقق من قيمة تجزئة SHA256 للملف التنفيذي الرئيسي
// تلميح: يمكن لتطبيقك استرداد هذه القيمة من الخادم
if let hashValue = IOSSecuritySuite.getMachOFileHashValue(.default), hashValue == "your-application-executable-hash-value" {
    print("لم يتم التلاعب بي.")
}
else {
    print("لقد تم التلاعب بي.")
}

وحدة كشف نقاط التوقف (Breakpoint)

root@kitploit:~
func denyDebugger() {
    // ضع نقطة توقف هنا
}
     
typealias FunctionType = @convention(thin) ()->()
let func_denyDebugger: FunctionType = denyDebugger   // `: FunctionType` ضروري
let func_addr = unsafeBitCast(func_denyDebugger, to: UnsafeMutableRawPointer.self)
let hasBreakpoint = IOSSecuritySuite.hasBreakpointAt(func_addr, functionSize: nil)

if hasBreakpoint {
    print("تم العثور على نقطة توقف في الدالة المحددة")
} else {
    print("لم يتم العثور على نقطة توقف في الدالة المحددة")
}

وحدة كشف نقاط المراقبة (Watchpoint)

root@kitploit:~
// ضع نقطة توقف في الدالة testWatchpoint
func testWatchpoint() -> Bool{
		// lldb: watchpoint set expression ptr
    var ptr = malloc(9)
    // lldb: watchpoint set variable count
    var count = 3
    return IOSSecuritySuite.hasWatchpoint()
}

اعتبارات أمنية

قبل استخدام هذه الأداة وغيرها من أدوات التحقق من أمان المنصة، يجب أن تفهم ما يلي:

  • تضمين هذه الأداة في مشروعك ليس الشيء الوحيد الذي يجب عليك فعله لتحسين أمان تطبيقك! يمكنك قراءة ورقة بيضاء عامة حول أمان الأجهزة المحمولة هنا.
  • يتم اكتشاف ما إذا كان الجهاز مكسور الحماية محليًا على الجهاز. وهذا يعني أنه يمكن تجاوز أي كاشف لكسر الحماية (حتى هذا)!
  • يُعتبر كود Swift أكثر صعوبة في التلاعب به ديناميكيًا مقارنةً بـ Objective-C. نظرًا لأن هذه المكتبة كُتبت بلغة Swift النقية، يجب ألا تتعرض طرق IOSSecuritySuite لبيئة تشغيل Objective-C (مما يجعل تجاوزها أكثر صعوبة ✅). يجب أن تعلم أن المهاجم لا يزال قادرًا على استخدام MSHookFunction/MSFindSymbol لرموز Swift وتغيير تدفق تنفيذ كود Swift ديناميكيًا.

المساهمة ❤️

نعم، من فضلك! إذا كانت لديك فكرة أفضل أو ترغب فقط في تحسين هذا المشروع، يرجى مراسلتي على Twitter أو LinkedIn. طلبات السحب (Pull requests) مرحب بها أكثر من أي وقت مضى!

شكر خاص: 👏🏻

  • kubajakowski للإشارة إلى مشكلة طريقة canOpenURL(_:)
  • olbartek لمراجعة الكود وطلب السحب
  • benbahrenburg للتحسينات المختلفة في ISS
  • fotiDim لإضافة مسارات ملفات جديدة للفحص
  • gcharita لإضافة دعم Swift Package Manager
  • rynaardb لإنشاء طريقة amIJailbrokenWithFailedChecks()
  • undeaDD للتحسينات المختلفة في ISS
  • fnxpt لإضافة اكتشافات متعددة لكسر الحماية
  • TannerJin لوحدات MSHook و RuntimeHook و SymbolHook وكشف نقاط المراقبة
  • NikoXu لإضافة وحدة سلامة الملفات
  • hellpf لإصلاح مشكلة socket معلق
  • Ant-tree لتحسين مقاومة الاختراق
  • izmcm لتنفيذ طريقة amIReverseEngineeredWithFailedChecks()
  • sanu لتقديم فحوصات ملفات جديدة
  • marsepu لطلب سحب جيد مع تحسينات جديدة
  • mkj-is لطلب سحب يحسن أداء ISS 🚄
  • LongXiangGuo لطلب سحب يضيف بيان الخصوصية
  • Coeur لتحسينات ISS وإصلاح الأخطاء

المهام المستقبلية

  • بحث حول كشف Installer5 و Zebra Package Manager (بدائل Cydia)
  • كاشف إخفاء كسر الحماية لـ Dopamine

الترخيص

راجع ملف LICENSE.

المراجع

أثناء إنشاء هذه الأداة استخدمت:

  • 🔗 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" بقلم David Thiel
تنزيل الأداة
  • Adobels لتكييف ISS مع متطلبات Apple الجديدة