
burner-net v1.3.0
عميل HTTP ذو ثقة صفرية ومضاد للطب الشرعي. يمسح الأسرار. يقطع الآثار. CPR في دبابة تخفٍ. 👻
BurnerNet
عميل HTTP صفر ثقة ومقاوم للطب الشرعي. يمسح الأسرار. يقطع الآثار. CPR في خزان التخفي. 👻
بورنرنت هو عميل HTTP مقاوم للطب الشرعي بلغة C++20. يوفر واجهة برمجة تطبيقات سلسة تشبه CPR للتطبيقات التي لا يمكنها الوثوق الكامل بالجهاز المحلي—يمسح الأسرار فيزيائيًا من الذاكرة ويقطع آثار التنفيذ لإخفاء منطقك عن الماسحات الضوئية والمصححات.
يقدم إعدادات افتراضية مألوفة ومتوافقة مع المضيف لـ HTTP العادي وملف تعريف مشدد (Hardened) صريح للبيئات المعادية. كلا المسارين يفضلان العملاء قصيري العمر؛ الثقة المتقدمة تظل مملوكة للتطبيق.
هل تتطلع إلى حماية الحمولات التي تم تنزيلها بواسطة BurnerNet؟ اطلع على RipStop Codec لفك تشويش الأصول في الذاكرة.
المبادئ • بدء الاستخدام • مسارات التكامل • واقع الأمان
في لمحة
| المجال | BurnerNet |
|---|---|
| اللغة | C++20 |
| المنصة | Windows x64/x86 (ذو أولوية أولى), Linux (موثوق) |
| النقل | HTTP(S) مدعوم بـ libcurl |
| نظافة الذاكرة | أدوات مسح آمنة ومخصصات مسح |
| النظافة الشرعية | تنظيف تلقائي للكومة/المكدس عبر حالة النقل المدارة بواسطة BurnerNet |
| التحليل الديناميكي | يمكن لعزل مكدس الاستدعاءات قطع الارتباط بين المستهلك والنقل |
| تشديد البناء | إزالة اختيارية لسلاسل التشخيص، حرفيات مشوشة، بيانات تشغيل C++ مخفضة في البناءات المشددة |
| تشديد وقت التشغيل | دعم DoH، أسرار قائمة على المزود، وضوابط ثقة أكثر صرامة |
| التكامل | CMake أو إسقاط المصدر في Visual Studio |
لماذا تستخدمه
استخدم BurnerNet عندما يكون عميل HTTP العادي واثقًا جدًا لبيئتك.
يساعدك عندما تريد:
- الحفاظ على عملاء الطلبات قصيري العمر بدلاً من مشاركة نقل عالمي واحد
- تقليل الاعتماد على DNS المحلي والإعدادات الافتراضية الأخرى للمضيف
- جلب الرموز والشهادات وأسرار التحقق فقط عند الحاجة
- الاحتفاظ بمنطق التحقق من الاستجابة في كود التطبيق الخاص بك
- تقليل السلاسل النصية الواضحة والبيانات الوصفية في البناءات المشددة
لمن هو مخصص
BurnerNet يناسب مشاريع مثل:
- تطبيقات سطح المكتب Windows ذات المصادقة عالية القيمة، الترخيص، أو طلبات التحديث
- الكود المضمن أو المحقون الذي يعمل في مضيف لا تثق به تمامًا
- الأدوات التي تريد فحوصات نقل أكثر صرامة دون التخلي عن واجهة C++ سلسة
المكدس القياسي مقابل BurnerNet
| الجانب | مكدس HTTP النموذجي | BurnerNet |
|---|---|---|
| عمر العميل | غالبًا ما يكون مشتركًا وطويل العمر | مصمم لعملاء يمكن التخلص منهم واستخدام نطاق الانفجار |
| القيم الحساسة | غالبًا ما تبقى الأسرار في التهيئة أو الذاكرة لفترة أطول من اللازم | عمليات استدعاء المزود تجلبها قرب الاستخدام |
| DNS والثقة | عادة ما يرث المُحَلِّل المحلي والإعدادات الافتراضية للمضيف | يدعم ضوابط ثقة أكثر صرامة بما في ذلك الاحتياطي DoH والمفاتيح المثبتة |
| التحقق | غالبًا ما يتم إضافة فحوصات السلامة الخاصة بالتطبيق لاحقًا | مبني للعمل مع خطافات التحقق قبل الرحلة والنقل والاستجابة |
النتائج الدفاعية
- بنية الذاكرة صفر شبح: يستخدم BurnerNet ماسح بحجم البادئة مخصص لخطف مسارات تخصيص الذاكرة الداخلية لـ
libcurlوتدفقات OpenSSL. يتم مسح مخازن النقل الحساسة عند مغادرتها العمر المدار بواسطة BurnerNet. تم التحقق من هذه النظافة على كل من Windows و Linux ضمن التهيئات المدققة الموضحة في الوثائق. - مسح إطارات المكدس: بعد كل طلب، تقوم المكتبة بتنظيف مكدس الخيط الخاص بها بشكل استباقي (تنظيف علامة الارتفاع الأعلى). يهدف هذا إلى تدمير أجزاء النقل الزائلة قبل عودة التحكم إلى تطبيقك.
- كومة هدف متحرك: يؤدي الجمع بين وسائل النقل القابلة للتخلص ورؤوس البيانات الوصفية المحاذية إلى تشتت عالي لمساحة العنوان، مما يجعل ذاكرة العملية غير متوقعة ومقاومة لتعيين المؤشرات المستقرة.
- حالة طلب قصيرة العمر: تم تصميم BurnerNet حول عملاء يمكن التخلص منهم بدلاً من وسائل نقل مفردة على مستوى العملية.
- ثقة أقل في المضيف: يساعد دعم DoH ودعم المفاتيح المثبتة وتدقيق النقل في تقليل الاعتماد على الإعدادات الافتراضية المحلية المخترقة.
- انكشاف أقل للنص العادي: تقلل عمليات استدعاء المزود وأدوات المسح الآمنة من عمر الشهادات والمفاتيح والرموز والمخازن الحساسة الأخرى.
- تحقق مملوك للتطبيق: يبقى التحقق من الاستجابة في الكود الخاص بك من خلال
WithResponseVerifier(...)بدلاً من ترميزه ثابتًا في مكتبة مشتركة. - بصمة ثابتة أكثر صعوبة: يمكن للبناءات المشددة ضبط
BURNERNET_DIAGNOSTIC_STRINGS=0بحيث يعيدErrorCodeToString(...)قيمE<number>مستقرة دون تضمين أسماء أخطاء رمزية. - خيارات نشر خفيفة الاستيراد: يمكن لـ
BURNERNET_HARDEN_IMPORTS=1حل التبعيات في وقت التشغيل ديناميكيًا بدلاً من الإعلان عنها مباشرة في جدول الاستيراد، باستخدام مسارKernelResolverالخاص بـ BurnerNet على Windows. - عزل مكدس الاستدعاءات (التسليم غير المتزامن): عند التمكين عبر
.WithStackIsolation(true)، تنفذ المكتبة دورة حياة النقل على خيط عامل منفصل. يمكن لهذا قطع مكدس استدعاءات المتصل فيزيائيًا وتقليل التتبع المباشر من الأعلى إلى الأسفل لمنطق التطبيق.
التخفي الموثوق
لا يدعي BurnerNet مجرد وضع مشدد خفيف الاستيراد؛ بل يأتي أيضًا مع ملاحظات تدقيق لتكوينات محددة تم اختبارها. في تدقيق Windows x64 Release مع BURNERNET_HARDEN_IMPORTS=ON:
- تعتم IAT: لم يتم ملاحظة أي إدخالات لـ
libcurl.dllأوws2_32.dllأوbcrypt.dllأوcrypt32.dllفي الثنائي المدقق. - تعتم الذاكرة: فشلت عمليات المسح الشرعي (Cheat Engine "All Strings") في اكتشاف عناوين URL أو رؤوس حساسة من نوع canary في كومة العملية أو مكدسها.
- عمى المصحح: تتحقق الاختبارات المدمجة من أن المكتبة تؤدي إلى "تحول الهوية". يعمل صانع القرار (تطبيقك) والناقل (BurnerNet) على معرفات خيوط مميزة، مما يقلل من التتبع من الأعلى إلى الأسفل خلال جلسات التصحيح المباشرة.
- الضجيج إلى الإشارة: تهدف المكتبة إلى النظافة الشرعية ضمن سلطة المسح الخاصة بها، مع الاعتراف بـ "الظلال" المتبقية على مستوى النظام في بيئة OS ووقت التشغيل.
تفاصيل ومنهجية التدقيق:
بدء الاستخدام
أسرع مسار:
- أضف BurnerNet إلى بنائك باستخدام CMake أو إسقاط المصدر في Visual Studio.
- قم بتضمين
<burner/net.h>. - أنشئ عميل مكدس، أرسل طلبًا، ثم اتركه يخرج من النطاق.
مثال بسيط:
#include <iostream>
#include <burner/net.h>
int main() {
burner::net::Client client;
if (!client.IsReady()) {
std::cerr << burner::net::ErrorCodeToString(client.InitError()) << '\n';
return 1;
}
const auto response = client
.Get("https://example.com")
.WithHeader("Accept", "text/html")
.WithTimeoutSeconds(10)
.Send();
if (!response.TransportOk()) {
std::cerr << burner::net::ErrorCodeToString(response.transport_error) << '\n';
return 1;
}
std::cout << "HTTP " << response.status_code << '\n';
return 0;
}
يستخدم Client الإعدادات الافتراضية القياسية: CA للنظام، DNS، والوكيل مع تمكين التحقق من النظير واسم المضيف لـ TLS. يظل WithCasualDefaults() متاحًا كاسم مستعار للتوافق القياسي.
لحركة المرور الحيوية أمنيًا، استخدم ملف التعريف المشدد. يرفض Build() عناصر التحكم المفقودة قبل أي طلب:
auto secure = burner::net::ClientBuilder(burner::net::ClientProfile::Hardened)
.WithMtlsProvider(ProvideMtlsCredentials)
.WithSecurityPolicy(AppSecurityPolicy{})
.WithDnsFallback(burner::net::DnsMode::Doh,
"https://resolver.example/dns-query",
"Primary DoH")
.AllowSystemDns(true) // explicit fallback, after DoH
.WithResponseVerifier(VerifySignedResponse)
.Build();
يتطلب المشدد التحقق من النظير واسم المضيف، عزل المكدس، توجيه DoH أولاً، مدقق استجابة للتطبيق، وتركيب ثقة مملوك للتطبيق. يتم رفض بيانات الاعتماد الثابتة WithMtls(...)؛ استخدم WithMtlsProvider(...).
مسارات التكامل
1. Standard CMake
استخدم هذا عندما يستخدم مشروعك النهائي بالفعل CMake وترغب في أنظف مسار مُدار بالتبعيات.
الوثائق: