مايكل: أرحب بالجميع ، أنا مايكل لاي ، هذا ماثيو ريتشارد ، يمكنك الاتصال به مات أو ريتشارد ، لأنه يحمل اسمين ، ولكن لا يهم.
مات: موضوع حديثنا اليوم هو السخرية من البرامج الضارة ، وهذا بالضبط ما نحاول القيام به.

لذلك ، ليس كل من يكتب الرمز يفعل ذلك بشكل جيد ، فالناس يرتكبون الكثير من الأخطاء. وليس كل من يستخدم الفيروس يفعل ذلك بشكل صحيح. هناك أيضًا أشخاص يفشلون في كلتا الحالتين. لذا اجلس بشكل أكثر راحة واسترخِ واستمع ، ربما ستكون هذه المعلومات مفيدة لك.
في هذه الحالة فقط ، قمنا بتضمين مادة فنية واقعية في العرض التقديمي بحيث تتعلم شيئًا على الأقل إذا كانت المحادثة لا تبدو مضحكة لك. ألاحظ أن هذا مجرد رأينا ، والذي قد لا يتزامن مع رأي أصحاب العمل لدينا.
مايكل: القصة الأولى تسمى "العسل ، لقد قللت الإنتروبيا!" تتحدث عن كيف نسي مؤلف سايلنت بانكر ، خوارزمية تشفير معقدة للغاية ، إنشاء الكون باستخدام PRNG - مولد الأرقام العشوائية الزائفة. على الشريحة ، ترى مقتطف رمز زيوس لشهر سبتمبر 2007 حيث يتم استخدام PRNG لمنع الكشف المستند إلى التجزئة. يتكون التوليد في بدء هذا المتغير العام المسمى ddTickCount: أولاً ، يضعه في سجل EAX ، حيث يتم استدعاء الوظيفة لأول مرة. ثم يتم التحقق مما إذا كانت قيمة الوظيفة تساوي صفر ، وإذا لم تكن متساوية ، فسيتم استدعاء TickCount لإنشاء SEED ، أي لبدء رقم عشوائي عشوائي باستخدام الأمر GetTickCount.

لم نفاجأ عندما رأينا أوجه التشابه مع هذا الرمز في ملف ثنائي سايلنت بانكر من فبراير 2008. يستخدم PRNG لإنشاء أسماء الملفات المؤقتة. هنا أيضًا ، هناك نفس المتغير العام ddTickCount ، الذي يتحقق مما إذا كان هناك صفر ، وإذا كان كذلك ، فسيتم بدء رقم عشوائي عشوائي باستخدام GetTickCount. أولاً ، قبل أن أرى msvsrt rand ، مولد الأرقام العشوائية الزائفة المستخدم بواسطة وظيفة rand () لمكتبة Microsoft C Runtime Windows ، اعتقدت أن هناك اتصالًا بين مؤلف Zeus ومؤلف Silent Banker ، استنادًا إلى أرقام HEX التي تم ترميزها بشكل ثابت في ملف ثنائي . ولكن في الواقع ، كان كلاهما مرتبطًا بشكل ثابت بـ msvsrt.
الآن نصل إلى وصفة لكارثة. هذا هو مقتطف شفرة من إصدار Silent Banker لشهر يوليو 2008 ، تم إصداره بعد بضعة أشهر من إصدار فبراير.

لقد قاموا بتحديث رمزهم ونشر نسخة جديدة من Silent Banker ، والتي كانت مختلفة بشكل كبير عما رأيناه سابقًا. في هذا البرنامج ، يتم استخدام PRNG لإنشاء مفتاح تشفير. هنا لم تعد ترى أن متغيرًا عامًا يسمى CurrentSeed يتم فحصه من أجل المساواة إلى الصفر ويتم إنشاء رقم شبه عشوائي بناءً على هذا ، يتم استخدامه ببساطة في هذا الرمز.

من الممكن أنه في مكان ما في الملف الثنائي ، حتى قبل هذا المكان ، يتم إنشاء قيمة هذا المتغير العام في شكل نوع من الأرقام. لذلك أنتقل إلى تفكيك هذا الرمز ومعرفة ما إذا تم استخدام قيمة CurrentSeed في مكان آخر من البرنامج قبل استخدامها في هذه الوظيفة rand (). ترى أن dd في البداية يبدأ من نقطة الصفر ، وسوف نتحقق من الإسنادات الترافقية لهذا المتغير.

في العمود T ، تعني القيمة w أن هناك عملية واحدة صالحة لهذا المتغير العام في الملف الثنائي بأكمله - هذه هي دالة rand نفسها. سوف أتحدث عن هذه الأشياء بطلاقة لأنه تم ذكرها بالفعل في DefCon العام الماضي. في شريحة "وصفة للكوارث" ، يظهر الخط Seed the PRNG أو "Initiation of Pseudo Random Number Generator" باللون الرمادي للإشارة إلى أن مؤلف كتاب Silent Banker لم يقم بهذا البدء.

والخطوة التالية هي أنهم يقومون بإنشاء مفتاح 16 بايت ، مما يجعل 1000 استدعاء نظام لدالة MyRand (). ثم ، من مفتاح 16 بايت ، يقومون بإنشاء رقم 8 بايت - المفتاح ، باستخدام صيغة محددة.
بعد ذلك ، يقومون بإنشاء رقم 8 بايت آخر لإنشاء مفتاح ثانوي من الرقم 8 بايت الأول ، وإضافة قيمة عشوائية إليه من ملف تكوين INI والحصول على مفتاح ثالث ، وهو أيضًا رقم 8 بايت. وأخيرًا ، يستخدمون دالة رياضية دقيقة عشوائية لتحويل مفتاح 8 بايت إلى مفتاح 32 بايت.
بعد ذلك ، يقومون بتشفير البيانات المسروقة مثل كلمة مرور المستخدم باستخدام مفتاح 16 بايت الأصلي. لكنهم لا يمررون هذا الرقم بايت "16" إلى المهاجم "الخاص بهم" بالبيانات المسروقة ، لأن إرسال المفتاح مع الرسالة المشفرة ليس فكرة جيدة. بدلاً من ذلك ، يضع مؤلف Silent Banker رقم 32 بايت داخل البيانات المسروقة ويرسله إلى المستلم ، الذي يجب أن يكون لديه برنامج يقوم بتحويل هذا الرقم مرة أخرى إلى المفتاح الأصلي 16 بايت. ومع ذلك ، ليس لدينا هذا البرنامج!
تعرض الشريحة التالية وصفة لكيفية استخدام هذه الكارثة مع الرقم 1 - عدم وجود مولد PRNG - لصالحك.

بادئ ذي بدء ، نحن نساوي قيمة PRNG بالصفر. يمكننا أتمتة الخطوات الأربع التالية باستخدام نص Python النصي الخاص بالمصحح ، لأن لدينا صيغة تحسب مفتاح 16 بايت ومفتاح 8 بايت ومفتاح 8 بايت التالي ومفتاح 32 بايت. هذه الصيغة ليست في رمز C ، ولكن لدينا لأن لدينا نسخة من الملف الثنائي Silent Banker الذي يوجد فيه.
سأريكم عرضًا توضيحيًا لكيفية عمل نص Python النصي هذا. لدينا سيناريو جيد: هنا لدي سايلنت بانكر ومصحح مستقل ألتحق به ، بالإضافة إلى إنترنت إكسبلورر ، حيث يعمل سايلنت بانكر. لاحظت أربع ميزات تولد مفاتيح التشفير. أقوم بتضمين نص Python النصي الموضح في الشريحة السابقة ، والذي قمت باستدعاؤه باستخدام أمر bang keygen. يمكنك أن ترى أن المصحح "يفقد" ببساطة هذه الوظائف القليلة التي أريد القيام بها لهذا العرض التوضيحي 5 مرات. ولكن في الحياة الواقعية ، قمنا بهذا الإجراء 5000 مرة للحصول على مجموعة أكبر من المفاتيح.
في لوحة السجل ، يمكنك رؤية أنه لكل تكرار للحلقة ، يتم إخراج مفتاح أساسي من 16 بايت ، والذي يرتبط بعد ذلك بمفتاح 32 بايت. في نفس الوقت الذي يقوم فيه البرنامج النصي بطباعة المعلومات في السجل ، يتم أيضًا إنشاء ملف نصي على القرص ، والذي يتضمن أزواجًا من مفاتيح ذات 16 بايت و 32 بايت. إنه مجرد ملف سداسي عشري ، لذلك يمكننا استخدام برنامج Python النصي الخاص بنا لمعالجة هذا الملف ، ولدينا أيضًا دليل سجل استعادناه من عقدة الأوامر والتحكم المسروقة.

في الجزء العلوي ، تشاهد عدة شهادات للمفاتيح الخاصة المشفرة ، وتحتها توجد العديد من الملفات النصية التي تحتوي على بيانات مشفرة. يمكننا ببساطة تشغيل البرنامج والبحث داخل هذه الملفات النصية عن طريق استخراج هذا المفتاح 32 بايت والمفتاح الأصلي 16 بايت المرتبط به.
بمجرد أن يعثر البرنامج على مفتاح 16 بايت ، يقوم بفك تشفير المعلومات الموجودة فيه ويعرضه في شكل ملف نصي. ترى هذا الملف على الشاشة ، ومن المستحيل قراءته.

ولكن لدينا بعد ذلك مجموعة من الملفات المؤقتة التي يمكن قراءتها .tmp ، حيث يمكننا الحصول على هذه المعلومات وإعادتها إلى المالكين "الشرعيين". لذا ، فقد بذلت سايلنت بانكر العمل الشاق لحماية المعلومات دون جدوى لأنهم نسوا الشروع في إنشاء مولد أرقام عشوائية زائفة.

الآن سأعرض أفضل جزء مما سبق - هذه هي وظيفة سايلنت بانكر ، والتي دعوتها Why_Not_Use_This (لماذا لا تستخدمها؟).

في الواقع ، داخل البرنامج الخاص بهم ، لديهم وظيفة GetCursorPos (تحديد موضع المؤشر) لتوليد الإنتروبيا ، والتي يمكن استخدامها لبدء PRNG ، ويمكننا التحقق من وجود مراجع تبادلية لهذه الوظيفة داخل البرنامج.

نرى أنه يستخدم في 10-15 مكانًا آخر في الرمز. وهكذا ، اتضح أن مؤلفي سايلنت بانكر لم ينسوا إدراج مولد أرقام عشوائي عشوائي في البرنامج ، لكنهم ببساطة نسوا تشغيل هذه الوظيفة في عملية التشفير باستخدام عامل تشغيل المكالمة.

تسمى الشريحة التالية "ذلك انزلق ..." ويوضح كيف يعمل هذا البرنامج إذا لم ينس المؤلف أي شيء.

القصة التالية بعنوان "DES or not DES" تدور حول مؤلف برامج ضارة لا يعرف حتى كيفية استخدام واجهة برمجة Windows بشكل صحيح أو لا يعرف الحجم الأقصى لمفتاح DES. ونتيجة لذلك ، وبسبب الحجم غير الصالح لهذا المفتاح ، يتم استخدام حصان طروادة بشكل افتراضي مع عامل التشغيل المنطقي xor.
لذلك ، بالنسبة لوظيفة واجهة برنامج CryptDeriveKey ، يحدد البايتان المنخفضان لمعلمة dwFlags ، العلامات التي تحدد كيفية ظهور عنوان URL الناتج ، حجم مفتاح التشفير الخاص بك.

لذا ، إذا كانت البايتات المنخفضة 0080 ، فسيكون مفتاح التشفير الذي نطلبه هو مفتاح 128 بت RC4. إنه مثل إطلاق النار على قدمك ، وسأوضح لك السبب.

في الشريحة ، ترى خطًا بحجم الخطأ لمفتاح dwFlags 128 بت - 800000 وخط بقيمة MSCryptoAPI غير صحيحة. سأريكم تفكيك هذا الشيء. تشاهد وظيفة تسمى "تهيئة نظام التشفير الفرعي": يستدعي حصان طروادة السياق المشفر ثم ينشئ حاوية لتجزئة MD5 ، ثم ينشئ تجزئة MD5 لكلمة المرور المشفرة في الملف الثنائي ويحاول استخدام إخراج وظيفة التجزئة هذه لإنشاء مفتاح DES 128 بت. ومع ذلك ، لا يتم إنشاء أي مفتاح في هذه الحالة ، لأنه لا يوجد شيء مثل مفتاح DES 128 بت.

في حالة فشل أي من وظائف API هذه ، تنتقل إلى هذا المكان ، الذي قمت بتمييزه باللون الأصفر ، وتعرض رسالة تفيد بعدم إمكانية استلام المفتاح. وهذا المكان موجود هنا ، حيث ينقل القيمة الموجودة في ebp وفي ذلك الوقت يساوي 0 ، أي الحق في هذه القيمة المنطقية bUseMSCryptoAPI.
دعونا نرى ما هو تأثير هذا أثناء تنفيذ البرنامج. سوف نتبع هذا العنصر من بنية الكود لنرى أين يتم استخدامه في البرنامج وكيف يختلف سلوك هذا طروادة عندما تكون الوظيفة صحيحة وعندما يكون الجرح خاطئًا.

نرى أنه يتم التحقق من القيمة المنطقية في الوظيفة التي أسميتها بيانات التشفير ، "تشفير البيانات" ، وإذا كانت صحيحة ، فإنها تأتي إلى هذه الكتلة ، حيث يتم استخدام تشفير DES و CryptEncrypt MSAPI.

ومع ذلك ، إذا كانت هذه القيمة 0 ، وكما نعلم ، فستكون دائمًا صفرًا مبكرًا ، تنتقل الوظيفة إلى هذه الكتلة ، والتي تكون افتراضيًا xor.

شعرت بالفضول في أي وقت قرر مؤلف البرنامج الضار إجراء نسخ احتياطي لكل هذا. ربما كان الناس يدفعونه من فوق ، لذلك اضطر للتخلص من البرامج الضارة ، ولكن في اللحظة الأخيرة أدرك أن DES الخاص به لا يعمل ، لذلك استخدم xor لتسجيل النسخ الاحتياطي. بشكل عام ، كان الأمر مضحكًا جدًا ، لذا فإن المغزى من هذه القصة هو عمل نسخ احتياطية دائمًا!
القصة التالية تسمى "ماذا فعلت بماذا؟". حاولت التوصل إلى مصطلح يصف كيفية عمل تشفير Coreflood Trojan ، وقررت تسميته "التشفير المعتمد على الموقع". باختصار ، اخترع مؤلفو هذا حصان طروادة طريقة تشفير جديدة. فكرت ، ربما شخص ما كتب بالفعل مقال حول هذا ويجب أن يكون "جوجل"؟ أعطتني Google رابطًا إلى موقع براءات الاختراع الأمريكي حيث قدم شخص براءة اختراع لـ "التشفير المعتمد على الموقع". هذا المخطط مربك للغاية ، لذلك سيستغرق الكثير من الوقت لدراسته. إليك كيفية عملها: أبعث لك برسالة مشفرة ، وللفك تشفيرها وقراءتها ، عليك أن تأخذ جهاز GPS وتذهب إلى نقطة مع خطوط الطول والعرض التي أشرت إليها. عادةً ما يكون التشفير حلاً وسطًا بين الأمان وسهولة الاستخدام ، ولكن لا يوجد أحد أو آخر في هذه الطريقة.

هذا بالتأكيد ليس آمنًا ويتطلب منك أن تذهب حيث يشير المرسل لقراءة الرسالة. قال مات مازحا إذا كنت تقاتل عبر الإنترنت من خلال البريد الإلكتروني وتريد حقا التخلص من شخص ما ، أرسل له رسالة مشفرة يمكنه قراءتها في مكان ما في العراق ، ولن تكون لديك مشاكل معه بعد الآن.
كيف يتم استخدام هذه الطريقة في طروادة Coreflood؟ تُظهر الشريحة جزءًا من التعليمات البرمجية يتبعه أنه بعد سرقة معلومات طروادة للمستخدم ، يقوم بتشفيرها وكتابتها على القرص حتى يتمكن طروادة من تلقي هذه المعلومات لاحقًا وتحميل الأوامر والتحكم إلى موقعه على الويب.
تسمى هذه الوظيفة SetFilePointer (تعيين مؤشر الملف) ، وقيمتها المرتجعة هي dWord ، مما يشير إلى الإزاحة في الملف الذي تم تعيين المؤشر إليه إذا تم تجاوزه. بعد ذلك ، تأخذ الدالة عدد البايتات لتشفير nNumberOfBitesToWrite وتنقله إلى سجل ecx. ثم تأخذ مؤشر البيانات للتشفير وتنقله إلى سجل edx.

بعد ذلك ، يتم استخدام عامل xor ، الذي يضع كل بايت في المخزن المؤقت al و ah ، مما يعني وحدات بايت ذات مستوى منخفض وعالي تم إرجاعها من SetFilePointer. وبالتالي ، فإن مفتاح التشفير في هذا المخطط هو الإزاحة في الملف الذي توجد فيه البيانات. هذا مذهل!
تسمى الشريحة التالية "كيفية إعادة تعيين تفريغ الأساسية". يصور برنامج dumpCore الذي كتبته للتو ، والذي خرج للتو. يمكنك تنزيله ، يوجد كل كود المصدر. سيساعدك هذا البرنامج إذا كان الكمبيوتر مصابًا بفيروس Coreflood ، والذي لسبب ما لم يتمكن من الوصول إلى خادم الأوامر والتحكم لتنزيل البيانات المسروقة. لذلك يمكنك الحصول على هذه الملفات التي حفظها على القرص وفك تشفيرها باستخدام برنامجي لمعرفة ما سُرق منك ، على سبيل المثال ، إذا كنت بحاجة إلى إبلاغ العميل بذلك.
سجلات البيانات المسروقة محاطة بدائرة باللون الأحمر على الشريحة.

ما لا يزال مثيرًا للاهتمام في Coreflood: على الرغم من أنه يحتوي على خوارزمية تشفير ضعيفة إلى حد ما ، إلا أنه لا يزال يحاول نقل جميع المعلومات المسروقة حول تكوين كمبيوتر الضحية ، وجميع المعلومات المستهدفة من البنوك واتحادات الائتمان ، وما إلى ذلك. لذلك هناك طريقة أخرى لإزالة ملف تفريغ أساسي تسمى "كيفية إزالة ملف تفريغ مركزي باستخدام Wireshark". Wireshark هو برنامج يقوم بتحليل حركة مرور شبكة Ethernet أو تدفق بيانات TCP.

توضح الشريحة التالية كيفية عمل Coreflood. هذه هي dlls التي تم إدخالها في Explorer و Internet Explorer. يقومون بتعديل التسجيل ، ويتطلبون إعادة تشغيل التطبيق ، لكنهم لا يحتاجون إلى إعادة تشغيل النظام. هناك طرق مختلفة لحقن هذه dlls في عملية.

المهم للمتسللين الذين يريدون غزو الفيروس بصمت هو كيفية إدخال الفيروس إلى جهاز الكمبيوتر الخاص بالمستخدم: هل يتطلب النظام إعادة تشغيل لكي يكون للبرامج الضارة تأثير ، أو يحتاج المستخدم فقط إلى إعادة تشغيل التطبيق ، في هذه الحالة Explorer.
وهي الآن هادئة حتى لا يسمع أحد!

هذا هو الرمز الذي أعيد بناؤه باستخدام الهندسة العكسية. يوضح هذا كيف يقوم Coreflood بإغلاق Explorer يدويًا حتى تصبح التغييرات سارية المفعول على الفور. من المحتمل أنك على دراية بما يحدث عندما يفشل المستكشف على الكمبيوتر - يختفي شريط المهام ، وتختفي نوافذ جميع التطبيقات المفتوحة ، وتختفي جميع الرموز الموجودة على سطح المكتب ، ثم يبدأون في العودة إلى مكانهم واحدًا تلو الآخر.
من الواضح أن مؤلفي Coreflood كانوا على علم بهذا ، لذلك وضعوا استدعاء نظام في هذا المكان لتعيين وضع الخطأ "الصحيح" للموصل قبل استدعاء OpenProcess مباشرة.
ماذا تفعل وظيفة SetErrorMode؟ يمنع الفشل المحدد للإعلامات المرسلة إلى النظام التي تنشئ نافذة منبثقة صغيرة وترسل رسالة خطأ أدت إلى إنهاء التطبيق. كل ما فعلوه برسالة الخطأ هذه هو منع ظهور نافذة منبثقة للمستخدم قبل فشل Explorer. أخبرني ما الذي يبدو أكثر شبهة للمستخدم: نافذة صغيرة منبثقة مصحوبة باختفاء كل شيء يظهر على الشاشة ثم تظهر مرة أخرى ، أو اختفاء ومظهر كل شيء دون أي رسالة خطأ؟ أسمع قلت: "كلا الحدثين".
الشريحة التالية وصفتها "بالذراعين والساقين ، ولكن بدون رأس". لا يظهر Coreflood ، عند تحميله كملف dll ، في قائمة الوحدات النمطية المحملة. يخصص ذاكرة صغيرة على الكومة وينسخ نفسه إلى هذا الكومة - أنا وضعته في إطار أحمر.

ثم يحذف رأس PE الخاص به ، لذلك إذا قابلت جهاز كمبيوتر مصابًا بهذا حصان طروادة ، فقل: "خطوتي التالية يجب أن تكون تفريغ هذا الملف القابل للتنفيذ وتحميله إلى المؤسسة الدولية للتنمية لتحليله" ، ولكن من الصعب جدًا تفريغ الملف القابل للتنفيذ ، إذا لم يكن هناك رأس PE. لذلك ، عندما يستدعي Coreflood التخصيص الظاهري ، فإنه يحدد علامة mem من أعلى إلى أسفل ، مما يؤدي إلى إرجاع النظام لأعلى عنوان ، وليس أدنى ، متاح. هذا يسمح للطروادة بإخفاء علامات الاقتباس للفتح / الإغلاق في منطقة ذاكرة أعلى من وضع المستخدم بين أنظمة dlls الأخرى. لذلك ، العرض التوضيحي التالي الذي دعوته "كيف تجعل كل شيء مخفي عديم الفائدة".

عندما تصادف شيئًا مثل Coreflood يستخدم التسلل ، ولا توجد أدوات جاهزة للعمل مع مثل هذه الفيروسات ، يجب عليك إنشاء أدواتك الخاصة.
إذا كنت معتادًا على فتح العبوة ، فإن استخدام مصحح أخطاء شائع بالنسبة لك. خاصة إذا لم يكن هناك أداة فتح تلقائي لأن هذه ليست خوارزمية شائعة. في هذه الحالة ، يمكنك استخدام المصحح للانتقال إلى نقطة الإدخال الأصلية ثم إزالة تفريغ Trojan باستخدام ProcDump أو أداة مساعدة أخرى. PE Import Reconstructor, , , .
, . . Volatility, Internet Explorer . , Coreflood, , . , 7FF81000.

, HEX , Coreflood. , , . .
, , Coreflood, Volatility . , ID Internet Explorer. , , PID 1732. Malfind, , , , . VAD , , . , .

, , 7FF81000. , Fix IAT, PID 1732 Internet Explorer , Coreflood.
dll, Internet Explorer, , RBA , , .
ثم يقوم بتفكيك جميع المعلومات ، بدءًا من منطقة الذاكرة عند 7FF81000 ، ويبحث عن مكالمات النظام التي تؤدي إلى أي من هذه الوظائف المصدرة. وبالتالي ، فإنه يعيد إنشاء جدول العناوين المستوردة حتى بدون رؤوس PE. ترى أن النتيجة التي أصدرها تشبه نتيجة Import Reconstructor: هناك وحدة ، الوظيفة الأولى وكل وظيفة تم استيرادها من الوحدات. الإخراج من هذا البرنامج النصي Fix IAT غير قابل للتنفيذ ، لذلك يمكنك فتحه في عارض تعديل PE ثم ترى أنه تمت استعادة جدول الاستيراد بنجاح.
21:15مؤتمر DEFCON 17. دعنا نضحك على الفيروسات الخاصة بك! الجزء 2شكرا لك على البقاء معنا. هل تحب مقالاتنا؟ هل تريد رؤية مواد أكثر إثارة للاهتمام؟ ادعمنا عن طريق تقديم طلب أو التوصية به لأصدقائك ،
خصم 30 ٪ لمستخدمي Habr على نظير فريد من خوادم مستوى الدخول التي اخترعناها لك: الحقيقة الكاملة حول VPS (KVM) E5-2650 v4 (6 نوى) 10GB DDR4 240GB SSD 1Gbps من 20 $ أو كيفية تقسيم الخادم؟ (تتوفر الخيارات مع RAID1 و RAID10 ، حتى 24 مركزًا وحتى 40 جيجابايت DDR4).
VPS (KVM) E5-2650 v4 (6 نوى) 10GB DDR4 240GB SSD 1Gbps حتى ديسمبر مجانًا عند الدفع لمدة ستة أشهر ، يمكنك الطلب
هنا .
ديل R730xd أرخص مرتين؟ فقط لدينا
2 x Intel Dodeca-Core Xeon E5-2650v4 128GB DDR4 6x480GB SSD 1Gbps 100 TV من 249 دولارًا في هولندا والولايات المتحدة! اقرأ عن
كيفية بناء مبنى البنية التحتية الطبقة باستخدام خوادم Dell R730xd E5-2650 v4 بتكلفة 9000 يورو مقابل سنت واحد؟