14-bo‘lim

Zararli dasturlar va ularga qarshi kurash

Zararli dastur turlari, yuqish yo'llari, aniqlash usullari, ransomware ga qarshi himoya va tozalash.

🕑 19 daqiqa o‘qish 📄 1 260 so‘z 👁 6 marta ko‘rilgan
Ushbu bo‘lim mundarijasi
  1. Turlari va maqsadlari
  2. Yuqish yo'llari
  3. Zararli dastur xatti-harakati
  4. Veb qobiq
  5. Ransomware
  6. Ransomware ga qarshi himoya
  7. Antivirus va EDR
  8. Xotirada ishlaydigan zararli dasturlar
  9. Ishlab chiqarish serverida
  10. Aniqlangan holatda
  11. Buzilish belgilari
  12. Himoya ro'yxati
  13. Xulosa

Zararli dastur - hujumchining tizim ichidagi "qo'li". Uni aniqlash va oldini olish - himoyaning muhim qismi.

Turlari va maqsadlari #

Maqsadi bo'yicha tasnif Pul olish • Ransomware - shifrlab to'lov talab qiladi • Bank troyani - hisobdan pul o'g'irlaydi • Cryptominer - resurslarni sarflaydi • Adware - reklama ko'rsatadi Ma'lumot o'g'irlash • Spyware - kuzatadi • Keylogger - tugmalarni yozadi • Infostealer - parol va cookie o'g'irlaydi • Ekran suratini oluvchi Nazorat olish • Backdoor - yashirin kirish yo'li • RAT - to'liq masofaviy boshqaruv • Rootkit - chuqur yashirinadi • Bot - botnetga qo'shadi Tarqalish • Virus - fayllarga qo'shiladi • Chuvalchang - tarmoq orqali o'zi • Yuklovchi - boshqa zararli dastur olib keladi • Troyan - foydali dastur ko'rinishida
Zamonaviy zararli dastur bir necha maqsadni birlashtiradi

Yuqish yo'llari #

Yo'lUlushiHimoya
Fishing emailEng kattaFiltr, o'qitish, biriktirma cheklovi
Zaif dasturlarKattaYangilanishlar
Zararli saytO'rtachaVeb-filtr, brauzer yangilanishi
USB qurilmalarKamUSB bloklash
Ta'minot zanjiriO'sib bormoqdaSBOM, audit
Ochiq RDP/SSHKattaKalit bilan kirish, VPN
Ochiq RDP - ransomware ning asosiy kirish yo'li

Internetga ochiq RDP (Windows masofaviy ish stoli) porti - ko'p ransomware hujumlarining boshlanish nuqtasi.

Hujumchilar botlar bilan parol sinaydi, kirgach - butun tarmoqni shifrlaydi.

Himoya:

  • RDP ni hech qachon internetga ochmang
  • Faqat VPN orqali kirish
  • Kuchli parol va 2FA
  • Kirish urinishlarini bloklash

Zararli dastur xatti-harakati #

Terminal
# Shubhali jarayonlar
ps aux --sort=-%cpu | head -20

# Nomsiz yoki g'alati joydan ishlayotgan jarayonlar
ls -la /proc/*/exe 2>/dev/null | grep -E '(deleted|/tmp/|/dev/shm/)'
Natija
lrwxrwxrwx 1 www-data www-data /proc/28471/exe -> /tmp/.x/kworker (deleted)
(deleted) belgisi - jiddiy ogohlantirish

Bu shuni anglatadi: jarayon ishlayapti, lekin uning fayli o'chirilgan.

Zararli dasturlar ko'pincha shunday qiladi: ishga tushadi va o'zini o'chiradi - shunda antivirus faylni topa olmaydi.

/tmp/, /dev/shm/, /var/tmp/ dan ishlayotgan jarayonlar ham shubhali.

Terminal
# Tarmoq ulanishlari
sudo ss -tunp state established

# Kutilmagan tinglash portlari
sudo ss -tulpn | grep -v -E ':(22|80|443|3306|6379) '

# Chiquvchi ulanishlar - buyruq serveriga
sudo ss -tunp | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -rn | head
Terminal
# Doimiylik mexanizmlarini tekshirish
crontab -l
sudo crontab -l
ls -la /etc/cron.*/
cat /etc/crontab

systemctl list-units --type=service --state=running
ls -la /etc/systemd/system/

# Avtoyuklash
ls -la ~/.config/autostart/
cat ~/.bashrc ~/.profile | grep -E '(curl|wget|nc|bash -i)'
Doimiylik - hujumchining birinchi maqsadi

Tizimga kirgach, hujumchi qayta ishga tushirilgandan keyin ham qolishni xohlaydi.

Odatiy joylar:

JoyTekshirish
Croncrontab -l, /etc/cron.*
systemd/etc/systemd/system/
Avtoyuklash skriptlari~/.bashrc, ~/.profile
SSH kalitlar~/.ssh/authorized_keys
Yangi foydalanuvchilar/etc/passwd
Kernel modullarilsmod
Veb qobiqVeb-ildizdagi yangi PHP fayllar
Terminal
# SSH kalitlarini tekshirish
for uy in /home/* /root; do
    if [ -f "$uy/.ssh/authorized_keys" ]; then
        echo "=== $uy ==="
        cat "$uy/.ssh/authorized_keys"
    fi
done

Veb qobiq #

PHP
// Odatiy veb qobiq belgilari - bunday kodni qidiring
<?php system($_GET['cmd']); ?>
<?php eval(base64_decode($_POST['x'])); ?>
<?php @assert($_REQUEST['a']); ?>
<?php $f='sys'.'tem'; $f($_GET['c']); ?>
Terminal
# Veb-ildizda shubhali PHP fayllarni qidirish
grep -rn --include="*.php" -E \
    "(eval|assert|base64_decode|shell_exec|system|passthru|popen|proc_open)\s*\(" \
    /var/www/dokon/public/

# Yaqinda o'zgargan fayllar
find /var/www/dokon -name "*.php" -mtime -7 -ls

# Yuklamalar papkasidagi PHP fayllar - juda shubhali
find /var/www/dokon/public/yuklamalar -name "*.php*"
Terminal
# Fayl yaxlitligini solishtirish
cd /var/www/dokon
git status --porcelain
git diff --stat
Natija
?? public/yuklamalar/rasm_2026.php
 M manba/Kontrollerlar/AsosiyKontroller.php
Git - yaxlitlik nazorati vositasi

Ishlab chiqarishda kod Git dan deploy qilinsa, git status har qanday o'zgarishni darhol ko'rsatadi.

Bu bepul va juda samarali yaxlitlik nazorati.

Yanada yaxshiroq: ishlab chiqarishda fayl tizimini faqat o'qish rejimida saqlang.

NGINX
# Yuklamalar papkasida PHP bajarilishini taqiqlash
location ^~ /yuklamalar/ {
    location ~ \.php$ {
        deny all;
        return 403;
    }
}

Ransomware #

Zamonaviy ransomware hujumi 1. Kirish fishing, RDP 2. Razvedka kunlar-haftalar 3. Tarqalish huquq oshirish 4. O'g'irlash ma'lumot nusxasi 5. Zaxirani yo'q qilish nusxalarni o'chirish 6. Shifrlash va shantaj Aniqlash imkoniyati 2-5 bosqichlar kunlar yoki haftalar davom etadi Monitoring bo'lsa - shifrlashgacha aniqlash mumkin Shifrlash - hujumning oxiri, boshi emas
Ransomware bir zumda ishlamaydi - vaqt bor
Erta aniqlash belgilari
BelgiNima anglatishi mumkin
Ko'p muvaffaqiyatsiz kirish urinishlariParol sinash
Yangi administrator hisobiHuquq oshirish
Tarmoq skanerlashLateral harakat
Zaxira nusxalarni o'chirishHujum tayyorgarligi
Katta hajmdagi chiquvchi trafikMa'lumot o'g'irlash
Xavfsizlik vositalarini o'chirishIzlarni yashirish
Ko'p fayl bir vaqtda o'zgarishiShifrlash boshlandi
Terminal
# Fayl o'zgarishlarini kuzatish
sudo apt install inotify-tools

inotifywait -m -r /var/www/dokon --format '%T %w%f %e' \
    --timefmt '%F %T' -e modify,create,delete
PHP
// Ko'p fayl bir vaqtda o'zgarishini aniqlash
final class ShifrlashDetektori
{
    private const CHEGARA = 100;      // 1 daqiqada
    private const OYNA = 60;

    public function faylOzgardi(string $yol): void
    {
        $soni = $this->kesh->oshiring('fayl_ozgarish', self::OYNA);

        if ($soni > self::CHEGARA) {
            $this->ogohlantiruvchi->kritik('shifrlash_shubhasi', [
                'ozgargan_fayllar' => $soni,
                'oxirgi_fayl'      => $yol,
            ]);

            // Xizmatni to'xtatish - zararni cheklash
            $this->tizim->yozishniTaqiqlang();
        }
    }
}

Ransomware ga qarshi himoya #

Ko'p qatlamli himoya
QatlamChora
Oldini olishYangilanishlar, email filtri, RDP yopish
CheklashSegmentatsiya, eng kam huquq
AniqlashEDR, fayl monitoringi, anomaliya
TiklashOflayn zaxira, tiklash mashqlari
Terminal
# Zaxira nusxa - 3-2-1 qoidasi
# 3 nusxa, 2 xil qurilma, 1 tasi tashqarida va oflayn

# Zaxira serveri ilova serveridan kirishga ruxsat bermasin
# Aksincha: zaxira serveri o'zi ma'lumotni tortib olsin
Terminal
#!/bin/bash
# Zaxira serverida ishga tushadi (tortib olish modeli)
set -euo pipefail

SANA=$(date +%F)
MANBA=dokon@10.0.1.15
ZAXIRA=/zaxira/dokon

# Faqat o'qish huquqi bilan ulanadi
rsync -az --delete \
    -e "ssh -i /root/.ssh/zaxira_kaliti" \
    "$MANBA:/var/www/dokon/storage/" \
    "$ZAXIRA/fayllar_$SANA/"

ssh -i /root/.ssh/zaxira_kaliti "$MANBA" \
    "mysqldump --single-transaction dokon | gzip" \
    > "$ZAXIRA/db_$SANA.sql.gz"

# O'zgartirilmaydigan saqlashga yuborish
aws s3 cp "$ZAXIRA/db_$SANA.sql.gz" \
    s3://dokon-zaxira/ \
    --storage-class GLACIER \
    --object-lock-mode COMPLIANCE \
    --object-lock-retain-until-date "$(date -d '+90 days' -Iseconds)"
Zaxira "tortib olish" modeli
ModelXavf
Itarish (server zaxiraga yuboradi)Server buzilsa - zaxira ham o'chiriladi
Tortib olish (zaxira serveri oladi)Server buzilsa - zaxira himoyalangan

Ikkinchi model xavfsizroq: buzilgan serverda zaxira serveriga kirish huquqi yo'q.

Terminal
# O'zgartirilmaydigan saqlash (S3 Object Lock)
aws s3api put-object-lock-configuration \
    --bucket dokon-zaxira \
    --object-lock-configuration '{
        "ObjectLockEnabled": "Enabled",
        "Rule": {
            "DefaultRetention": {
                "Mode": "COMPLIANCE",
                "Days": 90
            }
        }
    }'
Tiklashni muntazam sinang

"Zaxiramiz bor" - yetarli emas.

Har oyda:

  1. Tasodifiy zaxirani tanlang
  2. Alohida muhitga tiklang
  3. Ma'lumot to'liqligini tekshiring
  4. Tiklash vaqtini o'lchang

Ko'p tashkilotlar zaxirasi buzuq ekanini faqat falokat kunida biladi.

Antivirus va EDR #

VositaNima qiladi
AntivirusMa'lum zararli dasturlarni imzo bo'yicha topadi
EDRXatti-harakatni kuzatadi, tahlil qiladi, javob beradi
XDREDR + tarmoq + bulut + email
Antivirus - yetarli emas

An'anaviy antivirus imzo bo'yicha ishlaydi: u faqat ma'lum zararli dasturlarni topadi.

Zamonaviy hujumlarda:

  • Har bir qurbon uchun yangi variant yaratiladi
  • Fayl ishlatilmaydi (xotirada ishlaydi)
  • Qonuniy vositalar ishlatiladi (PowerShell, WMI)

EDR esa xatti-harakatni kuzatadi: "PowerShell internetdan skript yuklab, uni xotirada bajarmoqda" - bu shubhali, imzo bo'lmasa ham.

Terminal
# Linux uchun ClamAV
sudo apt install clamav clamav-daemon
sudo freshclam
sudo clamscan -r /var/www --infected --log=/var/log/clamav/skan.log

# Muntazam skanerlash
echo "0 2 * * * root clamscan -r /var/www --infected --log=/var/log/clamav/kunlik.log" \
    | sudo tee /etc/cron.d/clamav-skan
PHP
// Yuklangan fayllarni tekshirish
final class FaylSkanerlovchi
{
    public function xavfsizmi(string $yol): bool
    {
        $jarayon = new Process(['clamdscan', '--no-summary', '--fdpass', $yol]);
        $jarayon->run();

        if ($jarayon->getExitCode() === 0) {
            return true;
        }

        $this->jurnal->warning('Zararli fayl aniqlandi', [
            'yol'    => $yol,
            'natija' => $jarayon->getOutput(),
        ]);

        return false;
    }
}

Xotirada ishlaydigan zararli dasturlar #

Terminal
# Xotiradan ishlayotgan shubhali jarayonlar
sudo ls -la /proc/*/exe 2>/dev/null | grep memfd

# Bajariladigan xotira sohalari
sudo grep -l 'rwx' /proc/*/maps 2>/dev/null | head
Terminal
# PowerShell jurnalini yoqish (Windows)
# Script Block Logging - obfuskatsiya qilingan kodni ham yozadi
POWERSHELL
$yol = "HKLM:\SOFTWARE\Policies\Microsoft\Windows\PowerShell\ScriptBlockLogging"
New-Item -Path $yol -Force
Set-ItemProperty -Path $yol -Name "EnableScriptBlockLogging" -Value 1
"Yerdan tirikchilik" hujumlari

Hujumchilar tobora ko'proq tizimning o'z vositalaridan foydalanadi:

VositaSuiiste'mol
PowerShellSkript yuklab bajarish
WMIDoimiylik va masofaviy bajarish
certutilFayl yuklab olish
bitsadminFayl uzatish
curl, wgetYuklab olish
bash, pythonSkript bajarish

Bu vositalar qonuniy - antivirus ularni bloklamaydi.

Himoya: xatti-harakatni kuzatish va ortiqcha vositalarni olib tashlash.

Ishlab chiqarish serverida #

Terminal
# Ortiqcha vositalarni olib tashlash
sudo apt purge gcc make perl python3-pip
sudo apt autoremove

# Yoki cheklash
sudo chmod 750 /usr/bin/curl /usr/bin/wget
sudo chown root:sudo /usr/bin/curl /usr/bin/wget
INI
; PHP da xavfli funksiyalarni o'chirish
disable_functions = exec,passthru,shell_exec,system,proc_open,popen,curl_multi_exec,parse_ini_file,show_source

; Fayl tizimiga kirishni cheklash
open_basedir = /var/www/dokon:/tmp

; Masofaviy fayllarni o'chirish
allow_url_fopen = Off
allow_url_include = Off
disable_functions - qisman himoya

Bu chetlab o'tilishi mumkin, lekin hujumchi ishini qiyinlashtiradi.

Muhimroq chora - ilova zaifligini tuzatish, chunki hujumchi kod bajarish imkoniyatiga ega bo'lmasligi kerak.

Lekin chuqur himoya prinsipiga ko'ra, ikkalasi ham kerak.

DOCKERFILE
# Konteynerda minimal muhit
FROM php:8.3-fpm-alpine

# Shell yo'q obraz (distroless) - eng xavfsiz
# Yoki kerakli minimum
RUN apk add --no-cache libzip \
    && docker-php-ext-install pdo_mysql opcache \
    && rm -rf /var/cache/apk/*

# Bajariladigan fayllarni olib tashlash
RUN rm -f /bin/sh /bin/busybox 2>/dev/null || true

Aniqlangan holatda #

MARKDOWN
# Zararli dastur aniqlanganda

## 1. Izolyatsiya (darhol)
- [ ] Tizimni tarmoqdan uzing (o'chirmang!)
- [ ] Boshqa tizimlarni tekshiring
- [ ] Buzilgan hisoblarni bloklang

## 2. Dalillarni saqlash
- [ ] Xotira nusxasini oling
- [ ] Disk tasvirini oling
- [ ] Jurnallarni nusxalang
- [ ] Tarmoq trafigini saqlang

## 3. Tahlil
- [ ] Qanday kirdi?
- [ ] Qachon?
- [ ] Nima qildi?
- [ ] Qayerga tarqaldi?
- [ ] Qanday ma'lumot o'g'irlandi?

## 4. Tozalash
- [ ] Zaiflikni yoping
- [ ] Barcha parollarni almashtiring
- [ ] Tizimni **qayta o'rnating** (tozalash emas)
- [ ] Zaxiradan tiklang

## 5. Tiklash
- [ ] Monitoringni kuchaytiring
- [ ] Bosqichma-bosqich ishga tushiring
- [ ] Qaytish belgilarini kuzating
Tizimni "tozalash" emas, qayta o'rnatish

Zararli dastur topilgandan keyin uni o'chirish yetarli emas:

  • Boshqa komponentalar qolishi mumkin
  • Rootkit yashiringan bo'lishi mumkin
  • Doimiylik mexanizmlari bir nechta bo'lishi mumkin

Yagona ishonchli yechim - tizimni noldan qayta o'rnatish va zaxiradan tiklash.

Zaxirani ham tekshiring: u zararlangan bo'lishi mumkin.

Kompyuterni o'chirmang

Zararli dastur topilganda birinchi istak - kompyuterni o'chirish.

Lekin xotiradagi dalillar yo'qoladi:

  • Ishlayotgan jarayonlar
  • Tarmoq ulanishlari
  • Shifrlash kalitlari
  • Xotirada ishlaydigan zararli kod

To'g'ri: tarmoqdan uzing, lekin yoqiq qoldiring va xotira nusxasini oling.

Terminal
# Xotira nusxasini olish (Linux)
sudo apt install lime-forensics-dkms
sudo insmod /lib/modules/$(uname -r)/updates/dkms/lime.ko \
    "path=/mnt/tashqi/xotira.lime format=lime"

# Disk tasviri
sudo dd if=/dev/sda of=/mnt/tashqi/disk.img bs=4M status=progress
sha256sum /mnt/tashqi/disk.img > /mnt/tashqi/disk.img.sha256

Buzilish belgilari #

MARKDOWN
# Kompromis indikatorlari (IoC)

## Fayl darajasida
- Kutilmagan fayllar (ayniqsa `/tmp`, yuklamalar papkasida)
- O'zgargan tizim fayllari
- Yashirin fayllar (`.` bilan boshlanadi)
- G'alati kengaytmalar (`.php.jpg`)

## Jarayon darajasida
- Yuqori CPU (cryptominer)
- `(deleted)` belgili jarayonlar
- Kutilmagan ota-bola munosabati (`nginx` → `bash`)
- Nomsiz yoki tizim jarayoniga o'xshash nomlar

## Tarmoq darajasida
- Noma'lum IP ga ulanish
- G'alati portlar
- DNS so'rovlarining ko'payishi
- Katta chiquvchi trafik

## Hisob darajasida
- Yangi foydalanuvchilar
- Kutilmagan `sudo` amallari
- G'ayritabiiy vaqtdagi kirishlar
- Yangi SSH kalitlar
Terminal
#!/bin/bash
# tez-tekshiruv.sh - buzilish belgilarini qidirish

echo "=== O'chirilgan fayldan ishlayotgan jarayonlar ==="
sudo ls -la /proc/*/exe 2>/dev/null | grep deleted || echo "yo'q"

echo -e "\n=== /tmp va /dev/shm dan ishlayotganlar ==="
sudo ls -la /proc/*/exe 2>/dev/null | grep -E '/(tmp|dev/shm)/' || echo "yo'q"

echo -e "\n=== Yuqori CPU ishlatayotgan jarayonlar ==="
ps aux --sort=-%cpu | head -5

echo -e "\n=== Kutilmagan tinglash portlari ==="
sudo ss -tulpn | grep LISTEN | grep -v -E ':(22|80|443|3306|6379|9000) '

echo -e "\n=== So'nggi 7 kunda o'zgargan PHP fayllar ==="
find /var/www -name "*.php" -mtime -7 2>/dev/null | head -10

echo -e "\n=== Yuklamalar papkasidagi bajariladigan fayllar ==="
find /var/www/*/public/yuklamalar -type f \( -name "*.php" -o -name "*.sh" \) 2>/dev/null || echo "yo'q"

echo -e "\n=== Yangi SSH kalitlar ==="
find /home /root -name authorized_keys -mtime -30 -ls 2>/dev/null || echo "yo'q"

echo -e "\n=== Cron vazifalari ==="
for u in $(cut -f1 -d: /etc/passwd); do
    crontab -u "$u" -l 2>/dev/null | grep -v '^#' | sed "s/^/$u: /"
done

echo -e "\n=== UID 0 hisoblar ==="
awk -F: '($3 == 0) {print $1}' /etc/passwd

Himoya ro'yxati #

Zararli dasturlarga qarshi
ChoraBajarildi
Barcha tizimlar yangilangan
Email filtri va biriktirma cheklovi
RDP/SSH internetga ochiq emas
Antivirus yoki EDR o'rnatilgan
Ilova eng kam huquq bilan ishlaydi
Yuklamalar papkasida bajarish taqiqlangan
PHP xavfli funksiyalari o'chirilgan
Fayl yaxlitligi kuzatiladi
Oflayn zaxira mavjud
Zaxira "tortib olish" modelida
Tiklash sinovdan o'tkazilgan
Tarmoq segmentlarga bo'lingan
Jurnal markazlashtirilgan
Xodimlar o'qitilgan
Amaliy topshiriq
  1. Serveringizda tez-tekshiruv.sh skriptini ishga tushiring.
  2. Barcha cron vazifalarini tekshiring.
  3. SSH authorized_keys fayllarini ko'rib chiqing.
  4. Veb-ildizda shubhali PHP kodlarini qidiring.
  5. Yuklamalar papkasida PHP bajarilishini taqiqlang.
  6. disable_functions ni sozlang.
  7. ClamAV o'rnating va skanerlashni sozlang.
  8. Zaxira "tortib olish" modelini amalga oshiring.
  9. Zaxiradan tiklashni sinab ko'ring.
  10. Ko'p fayl o'zgarishini aniqlovchi monitoring qo'shing.

Xulosa #

  • Zararli dastur maqsadlari: pul, ma'lumot, nazorat, tarqalish.
  • Ochiq RDP - ransomware ning asosiy kirish yo'li.
  • (deleted) belgili jarayon - jiddiy ogohlantirish.
  • Hujumchi doimiylikni ta'minlaydi: cron, systemd, SSH kalitlar.
  • Veb qobiq - yuklamalar papkasida PHP bajarilishini taqiqlang.
  • Ransomware bir zumda ishlamaydi - kunlar davomida tayyorlanadi.
  • 3-2-1 zaxira va oflayn nusxa majburiy.
  • Zaxira "tortib olish" modelida ishlasin.
  • Antivirus yetarli emas - EDR xatti-harakatni kuzatadi.
  • Hujumchilar tizimning o'z vositalaridan foydalanadi.
  • Zararlangan tizimni tozalash emas, qayta o'rnatish kerak.
  • Kompyuterni o'chirmang - tarmoqdan uzing va xotira nusxasini oling.

Keyingi bo'limda jurnal va monitoringni ko'ramiz.

Xatolik topdingizmi?

Imlo xatosi, ishlamaydigan kod yoki noto‘g‘ri ma‘lumotni ko‘rsangiz - bizga xabar bering. Har bir xabar administrator tomonidan ko‘rib chiqiladi.