সিকিউরিটি টেস্ট স্যুট ট্রেড ফেডারেশন (sts-tradefed) অ্যান্ড্রয়েড ট্রেড ফেডারেশন টেস্ট হার্নেসের উপরে তৈরি করা হয়েছে নিরাপত্তা প্যাচ পরীক্ষার জন্য সমস্ত অ্যান্ড্রয়েড ডিভাইস পরীক্ষা করার জন্য যা সামঞ্জস্য পরীক্ষা স্যুটের মধ্যে পড়ে না। এই পরীক্ষাগুলি কেবলমাত্র একটি সাধারণ দুর্বলতা এবং এক্সপোজার (CVE) এর সাথে সম্পর্কিত (বা যুক্ত করা হবে) সমাধানগুলির জন্য।
SDK Android স্টুডিও বা স্ট্যান্ডার্ড Android SDK ব্যবহার করে Android সোর্স ট্রির বাইরে STS পরীক্ষার বিকাশের অনুমতি দেয়। এটিতে এসটিএস পরীক্ষা তৈরি এবং চালানোর জন্য প্রয়োজনীয় সমস্ত ইউটিলিটি অন্তর্ভুক্ত রয়েছে।
পূর্বশর্ত
- 64-বিট লিনাক্স পিসি।
- অ্যান্ড্রয়েড স্টুডিও (আপনার ডিস্ট্রোর প্যাকেজ ম্যানেজার থেকেও ইনস্টল করা যেতে পারে।
- অ্যান্ড্রয়েড প্ল্যাটফর্ম টুলস (
adb
,fastboot
) ইনস্টল করতে হবে এবং আপনার$PATH
এ থাকতে হবে (অর্থাৎ আপনি কমান্ড লাইন থেকেadb
চালাতে সক্ষম হবেন)। প্ল্যাটফর্ম টুল ইনস্টল করার সবচেয়ে সহজ উপায় হল আপনার ডিস্ট্রোর প্যাকেজ ম্যানেজারের মাধ্যমে।- যদি স্বতন্ত্র প্ল্যাটফর্ম টুলের পরিবর্তে অ্যান্ড্রয়েড স্টুডিওর SDK ম্যানেজার ব্যবহার করেন, তাহলে আপনার $PATH-এ SDK-এর
platform-tools
ডিরেক্টরি যোগ করতে ভুলবেন না।
- যদি স্বতন্ত্র প্ল্যাটফর্ম টুলের পরিবর্তে অ্যান্ড্রয়েড স্টুডিওর SDK ম্যানেজার ব্যবহার করেন, তাহলে আপনার $PATH-এ SDK-এর
- aapt , যা আপনার ডিস্ট্রোর প্যাকেজ ম্যানেজারের মাধ্যমেও ইনস্টল করা যেতে পারে।
অ্যান্ড্রয়েড স্টুডিও ব্যবহার শুরু করুন
সংরক্ষণাগারটি বের করার পরে, একটি বিদ্যমান প্রকল্প হিসাবে অ্যান্ড্রয়েড স্টুডিওতে ডিরেক্টরিটি খুলুন। টার্গেট Android ডিভাইসের আর্কিটেকচারের উপর নির্ভর করে কঙ্কাল পরীক্ষা তৈরি করতে assembleSTSARM
বা assembleSTSx86
বিল্ড টার্গেট চালান। সংযুক্ত ডিভাইসে কঙ্কাল পরীক্ষা চালানোর জন্য runSTS
বিল্ড টার্গেট চালান (ADB অনুমোদিত হতে হবে)।
Gradle ব্যবহার শুরু করুন
আর্কাইভ বের করার পর, গ্রেডল প্রোজেক্টের রুটে local.properties
ফাইলে sdk.dir
প্রপার্টি সেট করুন, তারপর কঙ্কাল টেস্ট তৈরি করতে assembleSTSARM
গ্রেডল টাস্ক চালান। বিল্ড শেষ হওয়ার পরে, build/android-sts/tools
( cd
) নেভিগেট করে এবং sts-tradefed
র্যাপার কার্যকর করার মাধ্যমে পরীক্ষা চালানো যেতে পারে।
$ echo 'sdk.dir=/home/<myusername>/Android/Sdk' > local.properties
$ ./gradlew assembleSTSARM
$ cd build/android-sts/tools
$ ./sts-tradefed run sts-dynamic-develop -m hostsidetest
একটি STS পরীক্ষা লিখুন
একটি STS পরীক্ষার তিনটি অংশ রয়েছে:
- একটি হোস্ট-সাইড ট্রেডফেড পরীক্ষা যা
sts-test
সাবডিরেক্টরিতে adb-এর মাধ্যমে ডিভাইসের সাথে ইন্টারঅ্যাক্ট করে। - একটি ঐচ্ছিক নেটিভ প্রুফ-অফ-কনসেপ্ট অ্যাটাক যা ডিভাইসে
adb push
মাধ্যমে পুশ করা হয় এবংnative-poc
সাবডিরেক্টরিতে হোস্ট-সাইড টেস্টের মাধ্যমে কার্যকর করা হয়। - একটি ঐচ্ছিক অ্যাপ বা পরিষেবা APK যা ডিভাইসে
adb install
মাধ্যমে ইনস্টল করা হয় এবং হোস্ট-সাইড টেস্টের মাধ্যমেও চালু করা হয়। অ্যাপ বা পরিষেবাতে JUnit দাবির নিজস্ব সেটও থাকতে পারে যা হোস্ট-সাইড রানারকে রিপোর্ট করা হয়। এটিtest-app
সাবডিরেক্টরিতে রয়েছে।
একটি সাধারণ STS পরীক্ষার প্রবাহ সাধারণত দুটি প্যাটার্নের একটি অনুসরণ করে:
ধারণার স্থানীয় প্রমাণ:
- হোস্ট-সাইড পরীক্ষাটি ডিভাইসে একটি নেটিভ এক্সিকিউটেবলকে ধাক্কা দেয় এবং লঞ্চ করে।
- নেটিভ প্রোগ্রাম ক্র্যাশ করে বা একটি নির্দিষ্ট প্রস্থান কোড ফেরত দেয়।
- হোস্ট-সাইড পরীক্ষা ক্র্যাশের জন্য পরীক্ষা করে, লগক্যাট ব্যাকট্রেস দেখে, বা আক্রমণ সফল হয়েছে কিনা তা নির্ধারণ করতে নির্দিষ্ট প্রস্থান কোড খোঁজে।
ইন্সট্রুমেন্টেড টেস্ট অ্যাপ:
- হোস্ট-সাইড পরীক্ষা ডিভাইসে একটি অ্যাপ বা পরিষেবা সমন্বিত একটি APK পুশ করে।
- হোস্ট-সাইড পরীক্ষাটি ডিভাইস-সাইড JUnit পরীক্ষা শুরু করে যা
runDeviceTest()
এর মাধ্যমে APK-এর সাথে বান্ডিল করা হয়। - ডিভাইস-সাইড JUnit ট্যাপ বোতাম পরীক্ষা করে এবং UIAutomator ব্যবহার করে অ্যাপটি দেখে, অথবা অন্যথায় নিরাপত্তা দুর্বলতা প্রকাশ করে এমন উপায়ে Android সিস্টেম অ্যাক্সেস করে।
- ডিভাইস-সাইড JUnit পরীক্ষাগুলির সাফল্য বা ব্যর্থতা হোস্ট-সাইড পরীক্ষায় ফেরত দেওয়া হয়, যা পরীক্ষা পাস হয়েছে কিনা তা নির্ধারণ করতে ব্যবহার করা যেতে পারে।
দুটি প্যাটার্নের সংমিশ্রণ (উদাহরণস্বরূপ, ডিভাইস-সাইড পরীক্ষার সাথে একটি নেটিভ প্রোগ্রাম চালানো)ও সম্ভব। frida-inject
মতো কিছু অন্যান্য উপকরণ কাঠামোও পাওয়া যায়। বিস্তারিত জানার জন্য, সিকিউরিটি টেস্ট স্যুট রেফারেন্স ডক্স এবং ট্রেডফেড রেফারেন্স ডক্স দেখুন।
আমার প্রুফ-অফ-কনসেপ্ট অ্যাটাকের জন্য কোনো টেস্ট অ্যাপ বা নেটিভ এক্সিকিউটেবলের প্রয়োজন নেই
বেশিরভাগ পরীক্ষার জন্য ডিভাইস-সাইড অ্যাপ এবং নেটিভ এক্সিকিউটেবল উভয়েরই প্রয়োজন হবে না।
যদি আপনার পরীক্ষায় একটি অন-ডিভাইস অ্যাপ/পরিষেবা ব্যবহার জড়িত না থাকে, তাহলে কেবল test-app
সাবডিরেক্টরি মুছে দিন। একইভাবে, যদি আপনার পরীক্ষাটি একটি নেটিভ এক্সিকিউটেবল ব্যবহার না করে, তাহলে native-poc
সাবডিরেক্টরি মুছুন তারপর প্রকল্পটি গ্রেডল-সিঙ্ক করুন। এই মডিউলগুলি বিদ্যমান না থাকলে স্বয়ংক্রিয়ভাবে সেই মডিউলগুলি তৈরি করা এড়িয়ে যাওয়ার জন্য প্রকল্পটি সেট আপ করা হয়েছে৷
আমার প্রুফ-অফ-ধারণা আক্রমণে একটি দ্বিতীয় অ্যাপ/পরিষেবা জড়িত
প্রথমত, আপনার দ্বিতীয় অ্যাপ/পরিষেবার জন্য আপনার প্রোজেক্টে একটি নতুন মডিউল যোগ করুন এবং আপনি অন্য কোনো APK-এর মতো লিখুন।
এরপর, এই ডিরেক্টরির মূলে build.gradle
সম্পাদনা করুন এবং copyArtifacts
, assembleStsARM
, এবং assembleStsx86
এর নির্দেশাবলী অনুসরণ করে আপনার মডিউল যোগ করুন। এটি নিশ্চিত করবে যে কম্পাইল করা APK STS-এর আউটপুট ডিরেক্টরিতে কপি করা হয়েছে এবং পরীক্ষায় নতুন অ্যাপ ইনস্টল/কল করা সক্ষম করে।
অবশেষে, প্রকল্পটি গ্রেডল-সিঙ্ক করুন।
এসটিএস পরীক্ষা জমা দিন
zipForSubmission
টাস্ক চালান (হয় অ্যান্ড্রয়েড স্টুডিওর সাথে বা কমান্ড লাইনে গ্রেডলের সাথে)। একটি নতুন ফাইল, codesubmission.zip
, প্রজেক্টের মূলে build
ডিরেক্টরিতে তৈরি করা উচিত। Android ভালনারেবিলিটি রিওয়ার্ড প্রোগ্রামে আপনার জমা দেওয়ার সাথে সেই ফাইলটি আপলোড করুন।
সিকিউরিটি টেস্ট স্যুট ট্রেড ফেডারেশন (sts-tradefed) অ্যান্ড্রয়েড ট্রেড ফেডারেশন টেস্ট হার্নেসের উপরে তৈরি করা হয়েছে নিরাপত্তা প্যাচ পরীক্ষার জন্য সমস্ত অ্যান্ড্রয়েড ডিভাইস পরীক্ষা করার জন্য যা সামঞ্জস্য পরীক্ষা স্যুটের মধ্যে পড়ে না। এই পরীক্ষাগুলি কেবলমাত্র একটি সাধারণ দুর্বলতা এবং এক্সপোজার (CVE) এর সাথে সম্পর্কিত (বা যুক্ত করা হবে) সমাধানগুলির জন্য।
SDK Android স্টুডিও বা স্ট্যান্ডার্ড Android SDK ব্যবহার করে Android সোর্স ট্রির বাইরে STS পরীক্ষার বিকাশের অনুমতি দেয়। এটিতে এসটিএস পরীক্ষা তৈরি এবং চালানোর জন্য প্রয়োজনীয় সমস্ত ইউটিলিটি অন্তর্ভুক্ত রয়েছে।
পূর্বশর্ত
- 64-বিট লিনাক্স পিসি।
- অ্যান্ড্রয়েড স্টুডিও (আপনার ডিস্ট্রোর প্যাকেজ ম্যানেজার থেকেও ইনস্টল করা যেতে পারে।
- অ্যান্ড্রয়েড প্ল্যাটফর্ম টুলস (
adb
,fastboot
) ইনস্টল করতে হবে এবং আপনার$PATH
এ থাকতে হবে (অর্থাৎ আপনি কমান্ড লাইন থেকেadb
চালাতে সক্ষম হবেন)। প্ল্যাটফর্ম টুল ইনস্টল করার সবচেয়ে সহজ উপায় হল আপনার ডিস্ট্রোর প্যাকেজ ম্যানেজারের মাধ্যমে।- যদি স্বতন্ত্র প্ল্যাটফর্ম টুলের পরিবর্তে অ্যান্ড্রয়েড স্টুডিওর SDK ম্যানেজার ব্যবহার করেন, তাহলে আপনার $PATH-এ SDK-এর
platform-tools
ডিরেক্টরি যোগ করতে ভুলবেন না।
- যদি স্বতন্ত্র প্ল্যাটফর্ম টুলের পরিবর্তে অ্যান্ড্রয়েড স্টুডিওর SDK ম্যানেজার ব্যবহার করেন, তাহলে আপনার $PATH-এ SDK-এর
- aapt , যা আপনার ডিস্ট্রোর প্যাকেজ ম্যানেজারের মাধ্যমেও ইনস্টল করা যেতে পারে।
অ্যান্ড্রয়েড স্টুডিও ব্যবহার শুরু করুন
সংরক্ষণাগারটি বের করার পরে, একটি বিদ্যমান প্রকল্প হিসাবে অ্যান্ড্রয়েড স্টুডিওতে ডিরেক্টরিটি খুলুন। টার্গেট Android ডিভাইসের আর্কিটেকচারের উপর নির্ভর করে কঙ্কাল পরীক্ষা তৈরি করতে assembleSTSARM
বা assembleSTSx86
বিল্ড টার্গেট চালান। সংযুক্ত ডিভাইসে কঙ্কাল পরীক্ষা চালানোর জন্য runSTS
বিল্ড টার্গেট চালান (ADB অনুমোদিত হতে হবে)।
Gradle ব্যবহার শুরু করুন
আর্কাইভ বের করার পর, গ্রেডল প্রোজেক্টের রুটে local.properties
ফাইলে sdk.dir
প্রপার্টি সেট করুন, তারপর কঙ্কাল টেস্ট তৈরি করতে assembleSTSARM
গ্রেডল টাস্ক চালান। বিল্ড শেষ হওয়ার পরে, build/android-sts/tools
( cd
) নেভিগেট করে এবং sts-tradefed
র্যাপার কার্যকর করার মাধ্যমে পরীক্ষা চালানো যেতে পারে।
$ echo 'sdk.dir=/home/<myusername>/Android/Sdk' > local.properties
$ ./gradlew assembleSTSARM
$ cd build/android-sts/tools
$ ./sts-tradefed run sts-dynamic-develop -m hostsidetest
একটি STS পরীক্ষা লিখুন
একটি STS পরীক্ষার তিনটি অংশ রয়েছে:
- একটি হোস্ট-সাইড ট্রেডফেড পরীক্ষা যা
sts-test
সাবডিরেক্টরিতে adb-এর মাধ্যমে ডিভাইসের সাথে ইন্টারঅ্যাক্ট করে। - একটি ঐচ্ছিক নেটিভ প্রুফ-অফ-কনসেপ্ট অ্যাটাক যা ডিভাইসে
adb push
মাধ্যমে পুশ করা হয় এবংnative-poc
সাবডিরেক্টরিতে হোস্ট-সাইড টেস্টের মাধ্যমে কার্যকর করা হয়। - একটি ঐচ্ছিক অ্যাপ বা পরিষেবা APK যা ডিভাইসে
adb install
মাধ্যমে ইনস্টল করা হয় এবং হোস্ট-সাইড টেস্টের মাধ্যমেও চালু করা হয়। অ্যাপ বা পরিষেবাতে JUnit দাবির নিজস্ব সেটও থাকতে পারে যা হোস্ট-সাইড রানারকে রিপোর্ট করা হয়। এটিtest-app
সাবডিরেক্টরিতে রয়েছে।
একটি সাধারণ STS পরীক্ষার প্রবাহ সাধারণত দুটি প্যাটার্নের একটি অনুসরণ করে:
ধারণার স্থানীয় প্রমাণ:
- হোস্ট-সাইড পরীক্ষাটি ডিভাইসে একটি নেটিভ এক্সিকিউটেবলকে ধাক্কা দেয় এবং লঞ্চ করে।
- নেটিভ প্রোগ্রাম ক্র্যাশ করে বা একটি নির্দিষ্ট প্রস্থান কোড ফেরত দেয়।
- হোস্ট-সাইড পরীক্ষা ক্র্যাশের জন্য পরীক্ষা করে, লগক্যাট ব্যাকট্রেস দেখে, বা আক্রমণ সফল হয়েছে কিনা তা নির্ধারণ করতে নির্দিষ্ট প্রস্থান কোড খোঁজে।
ইন্সট্রুমেন্টেড টেস্ট অ্যাপ:
- হোস্ট-সাইড পরীক্ষা ডিভাইসে একটি অ্যাপ বা পরিষেবা সমন্বিত একটি APK পুশ করে।
- হোস্ট-সাইড পরীক্ষাটি ডিভাইস-সাইড JUnit পরীক্ষা শুরু করে যা
runDeviceTest()
এর মাধ্যমে APK-এর সাথে বান্ডিল করা হয়। - ডিভাইস-সাইড JUnit ট্যাপ বোতাম পরীক্ষা করে এবং UIAutomator ব্যবহার করে অ্যাপটি দেখে, অথবা অন্যথায় নিরাপত্তা দুর্বলতা প্রকাশ করে এমন উপায়ে Android সিস্টেম অ্যাক্সেস করে।
- ডিভাইস-সাইড JUnit পরীক্ষাগুলির সাফল্য বা ব্যর্থতা হোস্ট-সাইড পরীক্ষায় ফেরত দেওয়া হয়, যা পরীক্ষা পাস হয়েছে কিনা তা নির্ধারণ করতে ব্যবহার করা যেতে পারে।
দুটি প্যাটার্নের সংমিশ্রণ (উদাহরণস্বরূপ, ডিভাইস-সাইড পরীক্ষার সাথে একটি নেটিভ প্রোগ্রাম চালানো)ও সম্ভব। frida-inject
মতো কিছু অন্যান্য উপকরণ কাঠামোও পাওয়া যায়। বিস্তারিত জানার জন্য, সিকিউরিটি টেস্ট স্যুট রেফারেন্স ডক্স এবং ট্রেডফেড রেফারেন্স ডক্স দেখুন।
আমার প্রুফ-অফ-কনসেপ্ট অ্যাটাকের জন্য কোনো টেস্ট অ্যাপ বা নেটিভ এক্সিকিউটেবলের প্রয়োজন নেই
বেশিরভাগ পরীক্ষার জন্য ডিভাইস-সাইড অ্যাপ এবং নেটিভ এক্সিকিউটেবল উভয়েরই প্রয়োজন হবে না।
যদি আপনার পরীক্ষায় একটি অন-ডিভাইস অ্যাপ/পরিষেবা ব্যবহার জড়িত না থাকে, তাহলে কেবল test-app
সাবডিরেক্টরি মুছে দিন। একইভাবে, যদি আপনার পরীক্ষাটি একটি নেটিভ এক্সিকিউটেবল ব্যবহার না করে, তাহলে native-poc
সাবডিরেক্টরি মুছুন তারপর প্রকল্পটি গ্রেডল-সিঙ্ক করুন। এই মডিউলগুলি বিদ্যমান না থাকলে স্বয়ংক্রিয়ভাবে সেই মডিউলগুলি তৈরি করা এড়িয়ে যাওয়ার জন্য প্রকল্পটি সেট আপ করা হয়েছে৷
আমার প্রুফ-অফ-ধারণা আক্রমণে একটি দ্বিতীয় অ্যাপ/পরিষেবা জড়িত
প্রথমত, আপনার দ্বিতীয় অ্যাপ/পরিষেবার জন্য আপনার প্রোজেক্টে একটি নতুন মডিউল যোগ করুন এবং আপনি অন্য কোনো APK-এর মতো লিখুন।
এরপর, এই ডিরেক্টরির মূলে build.gradle
সম্পাদনা করুন এবং copyArtifacts
, assembleStsARM
, এবং assembleStsx86
এর নির্দেশাবলী অনুসরণ করে আপনার মডিউল যোগ করুন। এটি নিশ্চিত করবে যে কম্পাইল করা APK STS-এর আউটপুট ডিরেক্টরিতে কপি করা হয়েছে এবং পরীক্ষায় নতুন অ্যাপ ইনস্টল/কল করা সক্ষম করে।
অবশেষে, প্রকল্পটি গ্রেডল-সিঙ্ক করুন।
এসটিএস পরীক্ষা জমা দিন
zipForSubmission
টাস্ক চালান (হয় অ্যান্ড্রয়েড স্টুডিওর সাথে বা কমান্ড লাইনে গ্রেডলের সাথে)। একটি নতুন ফাইল, codesubmission.zip
, প্রজেক্টের মূলে build
ডিরেক্টরিতে তৈরি করা উচিত। Android ভালনারেবিলিটি রিওয়ার্ড প্রোগ্রামে আপনার জমা দেওয়ার সাথে সেই ফাইলটি আপলোড করুন।