Bir Linux sunucusundaki herhangi bir şeyi kontrol etmek, yok etmek veya elde etmek için Shell komut dosyalarını kullanan bilgisayar korsanları, bazı akıllı saldırı yöntemleriyle büyük değer kazanabilir, ancak çoğu saldırı da izler bırakır. Elbette bu izler, Kabuk betikleri gibi yöntemlerle de gizlenebilir.
Bir saldırıya ilişkin kanıt arayışı, dosyanın değiştirilme tarihi gibi saldırganın bıraktığı izlerle başlar. Her Linux dosya sistemindeki her dosya, değişiklik tarihini kaydeder. Sistem yöneticisi, dosyanın en son değişiklik zamanını keşfettiğinde, onlara sistemin saldırı altında olduğunu bildirir ve sistemi kilitlemek için harekete geçer. Neyse ki, değişiklik zamanı kesinlikle güvenilir bir kayıt değildir. Değişiklik zamanının kendisi kandırılabilir veya değiştirilebilir. Bir kabuk betiği yazarak, bir saldırgan değişiklik zamanını yedekleme ve geri yükleme işlemini otomatik hale getirebilir.
Adımlar
1. Adım: Zaman damgasını görüntüleyin ve değiştirin
Çoğu Linux sistemi, zaman damgasını hızlı bir şekilde görüntülememizi ve değiştirmemizi sağlayan bazı araçlar içerir. En etkili olanı, yeni dosyalar oluşturmamıza ve bir dosya / dosya grubuna en son "dokunduğumuz" zamanı güncellememize izin veren "Dokunma" dır.
dokunma dosyası
Dosya yoksa, yukarıdaki komutu çalıştırmak "dosya" adında yeni bir dosya oluşturur; zaten varsa, bu komut değişiklik tarihini mevcut sistem saatine günceller. Aşağıdaki dize gibi bir joker karakter de kullanabiliriz.
dokunma *
Bu komut çalıştırdığı klasördeki her dosyanın zaman damgasını güncelleyecektir. Bir dosyayı oluşturduktan ve değiştirdikten sonra, ayrıntılı bilgilerini görüntülemenin birkaç yolu vardır: Birincisi "stat" komutudur.
stat dosyası
Çalışan istatistik, erişim, değişiklik veya güncelleme zaman damgaları dahil olmak üzere dosya hakkında bazı bilgiler döndürür. Bir grup dosya için, her dosyanın zaman damgasını görüntülemek için ls parametresini kullanabilirsiniz, "-l" veya "long" kullanın, bu komut çıktı zaman damgası da dahil olmak üzere ayrıntılı dosya bilgilerini listeler.
ls l
Artık geçerli zaman damgasını ayarlayabilir ve ayarlanmış zaman damgasını görüntüleyebilir veya özel bir zaman damgası tanımlamak için dokunmayı kullanabilirsiniz, "d" işaretini kullanabilir, tarihi tanımlamak için yyyy-aa-gg biçimini kullanabilir ve ardından saati hemen ayarlayabilirsiniz Saatleri, dakikaları ve saniyeleri aşağıdaki gibidir:
touch -d "2001-01-0120:00:00" dosyası
Değişiklik bilgilerini ls komutuyla onaylayın:
ls -l dosyası
Bu yöntem, bireysel zaman damgalarını değiştirmek için uygundur.Bu yöntem, sunucudaki işlemlerin izlerini gizlemek için çok etkili değildir. İşlemi otomatikleştirmek için kabuk komut dosyaları kullanılabilir.
Adım 2: Kabuk Komut Dosyasını Düzenleyin
Bir komut dosyası yazmaya başlamadan önce, hangi işlemlerin yapılması gerektiğini düşünmeniz gerekir. Sunucudaki izleri gizlemek için saldırganın klasörün orijinal zaman damgasını bir dosyaya yazması gerekir ve aynı zamanda herhangi bir değişiklik yaptıktan sonra orijinal dosyaya geri dönebilir.
Bu iki farklı işlev, kullanıcının girdisine veya parametrelerine göre tetiklenecektir.Betik, karşılık gelen işlevleri bu parametrelere göre yürütecektir.Aynı zamanda, hataları ele almak için bir yola ihtiyacımız var. Kullanıcının girdisine göre, üç olası işlem gerçekleştirilecektir:
Parametre yok - bir hata mesajı döndürür;
Zaman damgasını kaydedin - zaman damgasını dosyaya kaydedin;
Zaman damgasını geri yükle-kaydetme listesine göre dosyanın zaman damgasını geri yükle.
Komut dosyaları oluşturmak için iç içe geçmiş if / veya ifadeleri kullanabilir veya her işlevi koşullara göre kendi "if" ifadesine atayabilir ve bir metin düzenleyicide veya nano'da komut dosyaları yazmaya başlamayı seçebiliriz.
3. Adım: Komut dosyasını başlatın
Nano'yu komut satırından başlatın ve aşağıdaki komutla "timestamps.sh" adlı bir komut dosyası oluşturun:
nano timestamps.sh
Ardından aşağıdaki komutları yürütün:
#! / bin / bash
eğer ; o zaman
echo "Bir kaydetme (-s) veya geri yükleme (-r) parametresini kullan."
çıkış 1
fi
Bu dosyayı kaydetmek için nano'da Ctrl + O tuşlarına basın ve chmod komutuyla çalıştırılabilir bir komut dosyası olarak işaretleyin.
chmod + x timestamps.sh
Ardından, parametresiz bir hata mesajı döndürme işlevini test etmek için komut dosyasını çalıştırın. Eğer betik yankı ifademizi döndürürse, sonraki koşula geçebiliriz.
./timestamps.sh
4. Adım: Zaman damgasını dosyaya yazın
İf ifadesinin koşulunu tanımlayın, "-s" kaydetme işlevini yürütmek anlamına gelir:
ise; o zaman
fi
Elbette, kaydetmeyi planladığınız zaman damgası dosyasının var olup olmadığını kontrol etmeniz gerekir. Varsa, tekrarlanan veya hatalı girişi önlemek için onu silebiliriz (zaman damgaları adlı dosya). Aşağıdaki komutu kullanın:
rm -f zaman damgaları;
Ardından, tüm dosyaları ve bu girdiyi daha sonra temizlememize yardımcı olmak için sed gibi başka bir programa verilebilecek değişiklik zamanlarını listelemek için "ls" komutunu kullanın.
ls l
Aşağıdaki görüntüleme sonuçları genellikle görünür:
-rw-r - r-- 1 kullanıcı kullanıcı 0 Ocak 12017 dosya
Zaman damgasını kaydetmek için sadece yıl, ay, gün ve dosya adına ihtiyacımız var. Aşağıdaki komut "Jan" dan önce bilgileri temizleyebilir:
ls -l dosyası | sed's / ^.* Jan / Jan / p '
Bu, programımızın ihtiyaç duyduğu bilgileri gösterir, ancak ay biçimini bir sayı biçimine değiştirmemiz gerekir:
ls -l dosyası | sed's / ^.* Jan / 01 / p '
Tüm ayları rakamlarla değiştirin:
ls -l | sed -n's / ^. * Oca / 01 / p; s / ^. * Şubat / 02 / s / ^. * Mart / 03 / s / ^. * Nisan / 04 / s; s / ^. * Mayıs / 05 / s; s / ^ .* Haziran / 06 / s / ^. * Tem / 07 / s; s / ^. * Ağu / 08 / p; s / ^. * Eylül / 09 / p; s / ^. * Ekim / 10 / s; s / ^. * Kasım / 11 / s; s / ^. * Aralık / 12 / p; '
Bir klasörde çalıştırın ve sonucu aşağıdaki şekilde gösterildiği gibi göreceğiz:
Ardından çıktı sonucunu " > > "Zaman damgaları" adlı bir dosyaya:
do echo $ x | ls -l | sed -n / ^ .* Oca / 01 / s; s / ^ .* Şubat / 02 / s; s / ^. - Mart / 03 / p; s / ^. * Nisan / 04 / s; s / ^. * Mayıs / 05 / s; s / ^. * Haz / 06 / s / ^. * Tem / 07 / s; s / ^. * Ağu / 08 / p ; s / ^.* Eylül / 09 / p; s / ^. * Ekim / 10 / s; s / ^. * Kasım / 11 / s; s / ^.* Aralık / 12 / p; ' > > zaman damgaları
Bu noktada betiğin ilk iki işlemi tamamlanmış olur ve sonuçlar şu şekilde gösterilir:
Aşağıdakiler, test komut dosyasını işaretlemek için "-s" kullanabilir ve kaydedilen bilgileri kontrol etmek için cat kullanabilir:
./timestamps.sh s
kedi zaman damgaları
5. Adım: Dosyanın zaman damgasını geri yükleyin
Orijinal zaman damgasını kaydettikten sonra, başkalarının dosyanın değiştirildiğini fark etmemesi için zaman damgasını geri yüklemeniz gerekir. Aşağıdaki komutu kullanabilirsiniz:
$ 1 = "-r" ise; o zaman
fi
Ardından, metin dosyasının içeriğini iletmek ve satır satır çalıştırmak için aşağıdaki komutu kullanın:
kedi zaman damgaları | okunurken satır
yapmak
bitti
Ardından, dosya verilerinin kullanımını kolaylaştırmak için bazı değişkenler atayın:
AY = $ (echo $ satır | cut -f1 -d \);
GÜN = $ (echo $ satır | kes -f2 -d \);
FILENAME = $ (echo $ satır | cut -f4 -d \);
YIL = $ (echo $ satır | kes -f3 -d \)
Bu dört değişken kaydedilen zaman damgası dosyasında tutarlı olsa da, zaman damgası geçen yıl meydana gelmişse, yıl yerine yalnızca zamanı gösterecektir. Mevcut yılı belirlemeniz gerekiyorsa, bunu komut dosyası yazmak için yıl olarak atayabilir veya yılı sistemden döndürebilir ve takvimi görüntülemek için cal komutunu kullanabiliriz.
Ardından, yalnızca istenen yıl bilgilerini görüntülemek için ilk satırı alın:
GÜNCEL YIL = $ (cal | head -1 | cut -f6- -d \ | sed's / // g ')
Tüm değişkenleri tanımladıktan sonra, dokunma sözdizimini kullanarak dosyanın zaman damgasını biçimlendirilmiş tarihe göre güncellemek için "if else" ifadesini kullanabilirsiniz:
touch -d "2001-01-0120:00:00" dosyası)
Her seferinde iki nokta üst üste bulunduğundan, işlemi tamamlamak için aşağıdaki "ifelse" ifadesini kullanabilirsiniz. Genel işlem aşağıdaki şekilde gösterilmiştir:
; o zaman
dokunun -d $ CURRENTYEAR- $ AY- $ GÜN \ $ YEAR: 00 $ FILENAME;
Başka
-d "" $ YIL- $ AY- $ GÜN "" $ FILENAME;
fi
6. Adım: Komut dosyasını kullanın
Kullanılan komutlar esas olarak aşağıdaki gibidir:
./timestamps.sh -s dosya zaman damgasını kaydet
touch -d "2050-10-1210:00:00" * Dizindeki tüm dosyaların zaman damgasını değiştirin
ls -a Değiştirilen dosyayı onaylayın
./timestamps.sh -r dosyanın orijinal zaman damgasını geri yükleyin
Son olarak, dosyanın zaman damgasının önceki yedeklemenin zaman damgasıyla tutarlı olup olmadığını kontrol etmek için tekrar "ls -a" komutunu çalıştırabilirsiniz ve aşağıdaki şekilde gösterildiği gibi tüm komut dosyası yürütülür:
sonuç olarak
Bu komut dosyası yalnızca sunucuya saldırdıktan sonra kalan bazı izleri temizlemek için kullanılır. İzleri gizlemek için bilgisayar korsanları, sunucuya belirli saldırılar gerçekleştirirken kullanılan her yöntemi ve sunucuyu işgal ettikten sonra izlerini nasıl gizleyeceklerini dikkatlice düşünmelidir.
Yukarıdaki giriş sayesinde, zaman damgalarının da "sorumlu" olduğunu öğrendik, bu nedenle sistem yöneticileri, herhangi bir anormallik yok gibi görünse de, günlüklerinin ve koruma önlemlerinin çoğunun manipüle edilebileceğini anlamalıdır.