এটি দূষিত নয় তা নিশ্চিত করার জন্য আমি কীভাবে নির্বাহী অডিট করব?


10

আমি ভাবছিলাম যে কোনও বিচ্ছিন্ন পরিবেশে এক্সিকিউটেবল চালনার কোনও সরঞ্জাম বা কৌশল আছে, সম্ভবত ভার্চুয়াল মেশিনে। প্রোগ্রামটি চলমান থাকাকালীন আমি অ্যাপ্লিকেশনটি অডিট করতে সক্ষম হতে চাই, অর্থাৎ এক্সিকিউটেবল যা কিছু করছে তা (ফাইল এবং নেটওয়ার্ক অ্যাক্সেস) দেখুন।

এটি করার মাধ্যমে আমি নির্বাহযোগ্য দূষিত কিনা তা পরীক্ষা করতে সক্ষম হতে চাই, অর্থাৎ অপারেশনগুলি সম্পাদন করে যা এটি করা উচিত নয় (ফাইলগুলিতে পড়ুন / লিখুন, নেটওয়ার্ক পোর্টগুলিতে শুনুন / সংযুক্ত হন, ...)।

গ্রাফিকাল ইন্টারফেস দিয়ে আমি কিছু মনে করব না।


2
@ এলিয়াকাগান: যদি আমি প্রশ্নটি সঠিকভাবে বুঝতে পারি তবে ওপি "ক (সরঞ্জাম) এর জন্য জিজ্ঞাসা করে যেখানে নির্বাহী যা করছে তা আমি দেখতে পাচ্ছি" - কল্পনা করুন আপনি যদি চালাতে পারেন sandbox somebinaryএবং কাল্পনিক sandboxপ্রোগ্রামটি সমস্ত ফাইলকে somebinaryপড়া বা লিখিতভাবে লগ করতে পারে আইপি / পোর্টগুলির সাথে সংযুক্ত, ডেটা স্থানান্তর ইত্যাদি আপনার কাছে দরকারী বিষয় হবে এটিও আমি জানতে চাই যে এর মতো কিছু উপস্থিত রয়েছে কিনা (এবং বাস্তবে কোনও ভিএম-তে চলমান কোনও প্রোগ্রাম পর্যবেক্ষণ করে এমন সরঞ্জাম ছাড়া আপনার মত অর্থহীন হবে) এটি সেখানে যা করে তা বলতে পারে না)। ভাল প্রশ্ন.
সের্গেই

2
ইউএলএসই সম্পর্কিত প্রাসঙ্গিক প্রশ্ন আমি আগে জিজ্ঞাসা করেছি: রিয়েলটাইমে কোনও প্রক্রিয়ার খোলা ফাইলগুলি আমি কীভাবে পর্যবেক্ষণ করব? (কেবল ফাইলগুলি নয়, নেটওয়ার্কও নয়) মনে রাখবেন যে আপনি এটি ঘটতে দেখলে ক্ষতিটি ইতিমধ্যে হয়ে গিয়েছিল।
জার্মটভিডিজক

2
এই প্রশ্নটি বন্ধ করার বিষয়ে আমি মেটাতে একটি প্রশ্ন জিজ্ঞাসা করেছি: meta.askubuntu.com/questions/5871/… - আমি বিশ্বাস করি না এটি বন্ধ হওয়া উচিত ছিল।
সের্গেই

উত্তর:


10

এটি একটি সরঞ্জাম বা এটির মধ্যে এক্সিকিউটেবল চালনার জন্য ভার্চুয়াল মেশিন

হ্যাঁ, এটিকে অ্যাপ্লিকেশন ভার্চুয়ালাইজেশন বলা হয় ।

এটি সেট আপ করার জন্য এলএক্সসি (লিনাক্স কনটেইনারস) একটি ব্যবহৃত সাধারণ সরঞ্জাম। এটি আপনাকে এই অ্যাপ্লিকেশনের জন্য সম্পূর্ণ পৃথক নেটওয়ার্ক সেট আপ করতে দেয় এবং এটি এটিকে "স্যান্ডবক্স" একটি ক্রুটের মতো এক ধরণের ভার্চুয়াল মেশিনে পরিণত করে। এটি মূলত সুরক্ষার উদ্দেশ্যে ("জেল"), নিরীক্ষণের জন্য নয়।

আমি মনে করি সম্পূর্ণ এলএক্সসি পাত্রে ব্যাখ্যা করার পাশাপাশি এটি কীভাবে নিখুঁতভাবে নিরীক্ষণ করা যায় তা প্রশ্নের ক্ষেত্রের বাইরে কিছুটা। তবে কীভাবে শুরু করবেন তা নীচে কিছুটা দেওয়া হল।

প্রোগ্রামটি চলাকালীন, আমি এক্সিকিউটেবল যা কিছু করছে তা দেখতে (ফাইল এবং নেটওয়ার্ক অ্যাক্সেস) দেখতে সক্ষম হতে চাই।

এটি ব্যবহার করে সম্পন্ন করা যায় straceএবং আমি ইউনিক্স এবং লিনাক্সে একই প্রশ্নটি জিজ্ঞাসা করেছি:

সেখানে উত্তর হিসাবে এটি নেমে আসে মূলত

strace -t -e trace=open,close,read,getdents,write,connect,accept command-here

গুরুত্বপূর্ণ: একবার আপনি এটি ঘটতে দেখলে ক্ষতিটি ইতিমধ্যে হয়ে গেছে।


এলএক্সসি অ্যাপ্লিকেশন ধারক

এই নিবন্ধ থেকে । এটি নেমে আসে:

  1. lxc-macvlan.conf কনফিগারেশন ফাইল:

    # example as found on /usr/share/doc/lxc/examples/lxc-macvlan.conf
    # Container with network virtualized using the macvlan device driver
    lxc.utsname = alpha
    lxc.network.type = macvlan
    lxc.network.flags = up
    lxc.network.link = eth0 # or eth2 or any of your NICs
    lxc.network.hwaddr = 4a:49:43:49:79:bd
    lxc.network.ipv4 = 0.0.0.0/24
    
  2. এটি ব্যবহার করে শুরু করুন lxc-execute:

    sudo lxc-execute -n bash-test2 -f lxc-macvlan.conf /bin/bash
    

নোট করুন যে এলএক্সসি উভয় সিস্টেম এবং অ্যাপ্লিকেশন ধরণের ধারক সরবরাহ করে। আপনি এখানে অ্যাপ্লিকেশন পাত্রে সন্ধান করছেন।


1
এলএক্সসি এখনও প্রস্তুত নয় এবং বর্তমানে এটি অনিরাপদ। উদাহরণস্বরূপ, /sysভার্চুয়ালাইজড নয় এবং /sysধারক থেকে পরিবর্তনগুলি /sysহোস্টের পরিবর্তে করা হয়। ওয়েবে একটি তাত্ক্ষণিক অনুসন্ধান করা, কিছু নিবন্ধ রয়েছে যা একটি ধারক থেকে "পালাতে" কীভাবে নথিভুক্ত করে। এলএক্সসি সমস্যাটির একটি ভাল সমাধান হতে পারে তবে বর্তমানে তা তা নয় এবং এটি সুরক্ষা সরঞ্জাম হিসাবে ব্যবহার করা উচিত নয়।
Andrea Corbellini 24'13

1
উপায় দ্বারা পোস্ট করা কনফিগারেশন lxc.mountবিকল্পগুলির ব্যবহার করে না । এর অর্থ পুরো ব্যবহারকারীর ফাইল সিস্টেম এক্সিকিউটেবল রান দ্বারা অ্যাক্সেসযোগ্য।
আন্দ্রে কার্বেলিনী

10

আপনি যা সন্ধান করছেন এটি একটি সরঞ্জাম যা দেখায় যে কোনও প্রোগ্রাম সিস্টেমের সাথে কীভাবে ইন্টারঅ্যাক্ট করে (আরও নির্দিষ্টভাবে, কার্নেলের সাথে)। প্রোগ্রামগুলি সিস্টেমে ব্যবহার করে সিস্টেমের সাথে যোগাযোগ করে। সিস্কলগুলির উদাহরণগুলি হ'ল:

  • open - একটি ফাইল খোলার জন্য ব্যবহৃত;
  • readএবং write- একটি ফাইল বর্ণনাকারী / থেকে / পড়তে লিখতে ব্যবহৃত;
  • connect - একটি পিয়ারের সাথে একটি সকেট সংযোগ করতে ব্যবহৃত;
  • অনেক, অনেক অন্যান্য (দেখুন man syscalls)।

কথাটি হ'ল: সিস্কলগুলি ব্যবহার করে সনাক্ত করা যায় ptrace(2)। সুতরাং, মূলত, আপনি চারপাশে নির্মিত সরঞ্জামগুলি সন্ধান করছেন ptrace। এই জাতীয় সরঞ্জামগুলির মধ্যে strace(1)একটি হ'ল এটি একটি টার্মিনাল অ্যাপ্লিকেশন যা একটি আদেশকে আর্গুমেন্ট হিসাবে গ্রহণ করে এবং ফলাফলগুলি:

  • সিস্টেম কল করে প্রোগ্রাম কল করছে;
  • সিস্কেল তৈরি করতে ব্যবহৃত যুক্তি;
  • সিস্টেল ফলাফল।

আউটপুটটি সি-ফ্যাশনে রয়েছে। এখানে একটি উদাহরণ:

$ strace cat test
execve("/bin/cat", ["cat", "test"], [/* 55 vars */]) = 0
/* ... */
open("test", O_RDONLY)                 = 3
/* ... */
read(3, "hello\n", 32768)               = 6
write(1, "hello\n", 6)                  = 6
read(3, "", 32768)                      = 0
/* ... */

সেখানে আপনি দেখতে পাচ্ছেন যে cat testনামের একটি ফাইল খোলা হচ্ছে test, এর বিষয়বস্তুটি পড়া ( hello) এবং এটি স্ট্যান্ডার্ড আউটপুটে রাখছে।

straceঅনেক আউটপুট উত্পাদন করতে পারে, সুতরাং এটির ম্যান পৃষ্ঠা ( man strace) পড়তে ভুলবেন না , বিশেষত -eআউটপুটটির ডকুমেন্টেশন যা আপনাকে আগ্রহী কেবল সিস্কেলগুলি দেখতে দেয়।

দুর্ভাগ্যক্রমে, আমি গ্রাফিকাল বা সহজে ব্যবহারের বিকল্প সম্পর্কে সচেতন নই। আপনি যদি তাদের সন্ধান করতে চান ptraceতবে আপনার অনুসন্ধানের একটি কীওয়ার্ড হওয়া উচিত।


বিচ্ছিন্নতা সম্পর্কে, সেখানে অনেক প্রযুক্তি রয়েছে। ক্রুটস, লিনাক্স পাত্রে (যা বর্তমানে বিকাশাধীন এবং অসম্পূর্ণ রয়েছে), সফ্টওয়্যার ভার্চুয়ালাইজেশন এবং প্যারাভিউচুয়ালাইজেশন সবচেয়ে বেশি ব্যবহৃত হয়। তবে এটি আলোচনার পক্ষে খুব বড় একটি বিষয়। আপনি আরও বিশদ জানতে চাইলে আমি একটি নতুন প্রশ্ন খোলার পরামর্শ দেব।


5

AppArmor এ একবার দেখুন । আপনি এক্সিকিউটেবলের জন্য একটি সীমাবদ্ধ প্রোফাইল যুক্ত করতে পারেন এবং এটিকে "অভিযোগ" মোডে রাখতে পারেন, যেখানে ক্রিয়াকলাপের অনুমতি দেওয়া হবে তবে লগইন হবে, যা আমি মনে করি আপনার প্রয়োজনীয়তা পূরণ করে।

তবে মনে রাখবেন যে এটি আসলেই যথেষ্ট নয়। একটি চতুর দূষিত বাইনারি সনাক্ত করতে সক্ষম হয় যে এটি পর্যবেক্ষণের মধ্যে রয়েছে এবং এটি পর্যবেক্ষণ না করা ব্যতীত দূষিত ক্রিয়াগুলি সম্পাদন করতে সক্ষম হতে পারে।

AppArmor এর চেয়ে আরও এগিয়ে যায় এবং কোনও অ্যাপ্লিকেশন চিরকালের জন্য কেবল অনুমোদিত ক্রিয়াকলাপগুলিতে সীমাবদ্ধ রাখার অনুমতি দেয়। অ্যাপ্লর্মার প্রোফাইলগুলির সাথে উবুন্টু সফটওয়্যার সেন্টার শিপটিতে শেষ হওয়া অ্যাপ্লিকেশনগুলি ।


5

যেমন আপনি সনাক্ত করেছেন, একটি ভার্চুয়াল মেশিনটি বিচ্ছিন্নতা সরবরাহ করা আরও ভাল হবে, বিশেষত যদি আপনার বিশ্বাস করার কারণ থাকে যে একটি নির্বাহী প্রথম স্থানে দূষিত হয়। তবে এটি নিখুঁতও নয়, যেহেতু ভার্চুয়ালাইজেশন প্ল্যাটফর্মের দুর্বলতাগুলি (হার্ডওয়্যার এবং সফ্টওয়্যার উভয়ই) দূষিত হওয়ার জন্য দূষিত কোড ব্যবহার করতে পারে। প্রকৃত বিশ্ব ভার্চুয়ালাইজেশন দুর্বলতার উদাহরণ এখানে: http://www.kb.cert.org/vul/id/649219


1

আপনি একটি স্ন্যাপ তৈরি করতে পারে ।

স্ন্যাপগুলি "সুরক্ষা ব্যবস্থার মাধ্যমে ওএস এবং অন্যান্য অ্যাপ্লিকেশন থেকে সীমাবদ্ধ, তবে ব্যবহারকারী এবং ওএস ডিফল্ট দ্বারা নিয়ন্ত্রিত সূক্ষ্ম দানযুক্ত নীতি অনুসারে সামগ্রী এবং অন্যান্য স্ন্যাপগুলির সাথে ফাংশন বিনিময় করতে পারে।" ( http://snapraft.io/docs/snaps/intro থেকে )

এগুলি অ্যাপআর্মার ছাড়াও আরও বিচ্ছিন্নতা সরবরাহ করে, উদাহরণস্বরূপ সেকম্পম্প ব্যবহার করে ।

এছাড়াও, আপনার সিস্টেমে সহজ বিতরণ এবং পারমাণবিক আপডেটের জন্য একটি স্ন্যাপ স্ব-অন্তর্ভুক্ত থাকতে পারে।


0

ধন্যবাদ, উত্তরগুলি খুব সহায়ক ছিল ...

আমি এটিও পেয়েছি: https://downloads.cuckoosandbox.org/docs/

ম্যালওয়ারটি কোনও ভিএম-তে বসে থাকার সময় বিশ্লেষণ করার জন্য এটি একটি খুব আকর্ষণীয় সরঞ্জাম

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.