Статьи ::Западлостроение в Linux::

Discussion in 'Статьи' started by Ch3ck, 30 Jun 2006.

  1. Ch3ck

    Ch3ck Elder - Старейшина

    Joined:
    9 Jun 2006
    Messages:
    1,363
    Likes Received:
    1,192
    Reputations:
    430
    Первый прикол подойдет для абсолютно любой жертвы. Угадай, кого больше всего боится непросвещенный юзер? Правильно, хакеров! Хакер для ламера сродни божеству, которого малограмотный пользователь старается избегать. Как только работник увидит в консоли слово hack, он тут же вскочит с места и закричит, как будто его писюк загорелся! Давай же заставим бедного работника сделать это . Попробуем составить изысканный списочек файлов, после просмотра которого лицо даже самого стойкого человека покроется красными пятнами. Главное - пофантазировать и составить массив ярких имен файлов, которые ну никак не должны находиться на компе жертвы. Пусть это будут слова cool_porn, trojan, exploit, ddos, attack и т.п. Мы не будем создавать эти файлы физически. Это не элитно . Лучше наколбасить какой-нибудь скрипт, который заменит команду ls.

    Как ты знаешь, после входа пользователя в систему подгружается файл ~/.bash_profile– эдакий профиль каждого логина (при использовании неначального/порожденного интерактивного командного интерпретатора все настройки читаются из конфига /profile, ~/.profile ~/.bash_profile и ~/.bash_login[/ оболочкой игнорируются, так что будь внимателен). Там могут объявляться новые переменные, процедуры и алиасы. Как раз последнее нам и пригодится. Мы засунем в профиль алиас на команду ls, а точнее, подгрузим шпионский файл ~/.functions с подложными алиасами, чтобы не вызвать панику у слегка «продвинутого» юзера.

    Прописав алиас в якобы служебном файле ~/.functions, мы добились замены системной команды ls на ~/.tmp/.ls (во временном каталоге будут находиться все твои подложные сценарии). Когда плацдарм для прикола готов, можно приступить непосредственно к кодингу.
    Как я уже говорил, наша задача состоит в том, чтобы вывести список хакерских файлов по команде ls. Это просто, мало того, для остроты ощущений мы оформим все в цвете – ведь юзер привык, что листинг окрашивает имена документов в разные цвета. Сперва поставим одно условие: если команда имеет параметры, то необходимо обращаться к реальному /bin/ls. Только в противном случае можно активизировать прикол. Таким образом, юзер не сразу догадается, что его подставили.
    .ls собственной персоной

    Code:
    #!/bin/sh
    
    if [ "$*" == "" ]
    
    then
    
    echo -e "\033[01;32m0day-exploit\t\t\t\033[00;mmremap.c\n\033[01;32m7350fun\t\t\t\t\033[01;31moral_sex.mpg"
    
    echo -e "all-logwipers.tgz\t\t\033[00;mpasswords.crk\n\033[01;31manal_sex.avi\t\t\t\033[01;34mporno"
    
    .......
    
    exit
    
    fi
    
    /bin/ls --color=auto $*
    
    Необходимо знать, что служебная переменная $* хранит в себе аргументы команды. Ее мы, собственно, и анализируем. Для цветопечати нужно воспользоваться конструкцией \033[код_фона;код_цвета+m. Вся сложность прикола в том, что тебе потребуется грамотно выстроить и окрасить цепочку файлов. Результат поражает! Проверено на реальных жертвах.

    Злополучные каталоги

    Если тебе кажется, что прикол с ls не выведет жертву из себя, можно попробовать насолить коллеге с помощью команды cd. Интересно, как нормальный человек отреагирует на то, что из-за перехода в каталог стали бы удаляться файлы во всех папках? :). Пришло время это проверить. Прописывай второй алиас в виде alias cd=~/.tmp/.cd и приступай к кодингу смертельного сценария.

    На самом деле ничего удалять мы не будем, просто припугнем юзера, что вся его информация может полететь к чертовой матери, и не забудем перехватить сигнал SIGINT (который, как известно, посылается при нажатии Ctrl+C). Все это реально сделать в маленьком bash-скрипте.

    Запусти cd и попрощайся с системой

    Code:
    #!/bin/sh
    
    trap true SIGINT
    
    DIRS=`/bin/ls -1 /`
    
    for each in $DIRS
    
    do
    
    echo "rm: cannot remove directory \`/$each': Is a directory"
    
    rand=$((RANDOM%10+1))
    
    sleep $rand
    
    done
    
    Первым делом мы перехватили сигнал. Это осуществляется шелловой командой trap, которой передаются два параметра: команда, выполняемая после прихода сигнала, и сам сигнал. Далее выполняем листинг корневого каталога и загоняем вывод в переменную. Затем создаем цикл по каждой строчке переменной (а строка – название папки в корне) и оповещаем юзера, что внутренности системы незамедлительно удаляются (лишь верхним папкам удается уцелеть. Чтобы жертва не приняла удаление за прикол, генерируем случайное число от 1 до 10 и молчим все это время. В итоге создается реальное ощущение работы с каталогами .

    Угадай, что сделает юзер в первую очередь, как увидит подобное сообщение? Разумеется, нажмет Ctrl+C. Но не тут-то было! Перехват сделает свое дело и не даст команде аварийно завершиться. Юзер напрасно тратит нервы на убийство роковой команды, бьет кулаками по клавиатуре и монитору и кричит благим матом . Зрелище, которое ты так давно хотел увидеть.

    Он выключил сервер!

    Что делают работники в консоли? Правильно, работают . Корректируют документы, компилят различные сценарии и никчемные проекты. Пришло время нарушить их рабочую идиллию и вмешаться в процесс грязными хакерскими руками: создать алиас на профессиональный редактор vi, которым пользуются особо одаренные линуксоиды. Этот скрипт внушит твоему любимому коллеге мысль, от которой у него может пропасть дыхание и желание жить. На его экране появится сообщение, характерное для процесса завершения работы, консоль повиснет, а ты и твои заранее предупрежденные сотрудники повернетесь к нему и начнете «благодарить» разными словами. Ведь он только что… удаленно уронил сервер!
    Уверен, что у такого работника пропадет желание трудится до конца смены, даже несмотря на то, что на самом деле никакого шатдауна не произойдет.

    .vi вызывающий halt

    Code:
    #!/bin/sh
    
    DATE=$(LC_ALL=en date +'%c')
    
    TTY=$(basename `tty`)
    
    echo -e "Broadcast message from $USER (pts/$TTY) ($DATE)\n\nThe system is going down for system halt NOW!"
    
    sleep 500
    Чтобы осуществить прикол, нужно знать вывод команды halt. Уверен, ты выучил его наизусть. Осталось лишь вставить в мессагу переменные $USER, $TTY и текущую дату. Последняя выводится на буржуйском языке в формате %c, как это видно из кода. Что касается псевдоустройства, то прежде чем его напечатать, необходимо удалить из переменной каталог /dev/. Эта проблема быстро решается при помощи регвыра утилиты sed, либо при помощи программы basename. В скрипте был использован второй вариант. Можешь нагрузить сценарий перехватом сигнала SIGINT (чтобы реальнее было!) и отключением отображения символов (с помощью команды stty).

    Удаляем... и зависаем!

    Часто юзер вычищает из своего каталога мусор. Чтобы выпендриться, некоторые личности юзают консольную команду rm, а не удобный интерфейс редактора mc. Над такими коллегами мы и будем прикалываться. Представь, что юзер запустил rm, а бинарник злосчастно завис. Жертва будет искать всевозможные причины – протрояненный /bin/rm, падение сервера или повреждение кабеля. От тебя требуется лишь поддакивать ламеру, мол, у меня такая же проблема, не волнуйся, друг .

    Алгоритм сценария будет следующим: скрипт проанализирует параметры rm и возьмет последний в качестве файла (так оно и бывает чаще всего). Затем будет выведено предупреждение об удалении особо важного документа. Юзер, не раздумывая, попытается нажать «y», но не тут-то было! Консоль намертво подвиснет. Это произойдет из-за того, что в сценарии будет выключено отображение ввода, а также перехвачен сигнал SIGINT.

    .rm – удалит файл и подвесит систему

    Code:
    #!/bin/sh
    
    trap "stty echo" EXIT
    
    trap true SIGINT
    
    for file in "$@"
    
    do
    
    last=$file
    
    done
    
    echo -n "rm: remove write-protected regular file \`$file'? "
    
    `stty -echo`
    
    while read $deep
    
    do
    
    false > /dev/null 2> &1
    
    done
    Видно, что на всякий случай я перехватил и второй сигнал – сигнал выхода из программы. Когда это произойдет (через kill и т.п.), все символы снова будут отображаться как ни в чем не бывало. До повторного запуска /bin/rm .

    Только для посвященных!

    По счастливой случайности ты увидел открытую консоль админа, который владеет рутовым паролем? Очень хорошо! Самое время для приколов над умными людьми. Я уверен, сисадм долго будет искать подставу, а когда найдет, не отойдет от открытой консоли ни на шаг. К тому же, если администратор не запалил тебя у его компа, у тебя будет железное алиби . Да, собственно, прикол будет безобидным. Всего-то выведем админу сообщение, что он недостоин рутовых привилегий. Поверь, такие мессаги больше всего бесят сисадмов .
    Как ты догадался, мы переопределим вызов /bin/su на поддельный .su. В нем напишем, что «к сожалению, юзер не имеет прав для вызова /bin/su». Естественно, прежде чем смотреть алиасы, админ будет долго анализировать свои права и добавлять себя в неизвестные группы (если, конечно, под рукой будет открытая рутовая консоль), а лишь затем догадается о подставе. Немного фантазии - и ты можешь превратить .su в полноценный рутовый шелл, который будет слегка глючить и сбоить. Вот и весь сценарий:

    #!/bin/sh

    echo -e "You are not allowed to su root!\nSorry."

    Пользуясь случаем, напомню, что параметр –e позволяет обрабатывать специальные символы типа возврата каретки, табуляции и т.п.

    Что нам стоит шелл построить?

    И наконец, самый хардкорный сценарий, реализацию которого я оставил на десерт. Оно понятно, теперь ты владеешь всеми bash-заподлянками и можешь наколбасить суперский скрипт. Сейчас мы подменим не какой-нибудь бинарник, а целый командный интерпретатор!

    Когда юзер отойдет на обед (в туалет, покурить, поговорить по мобиле – нужное подчеркнуть ;)), аккуратно перенеси подложный скрипт в его каталог, а затем запусти его. Перед этим ты умело подкорректируешь приглашение интерпретатора, а также придумаешь заподлянские выводы от команд (впрочем, можешь оставить дефолтовые - я не обижусь). Собственно, творение называется bash, выполняет функции /bin/bash, а на первый взгляд вообще неотличимо от шелла. Но только на первый . Стоит юзеру выполнить какую-нибудь команду, как скрипт ругнется на нехватку памяти, на права, на ошибку сегментации. В итоге у юзера пропадет желание работать, а у тебя существенно поднимется настроение и боевой дух .

    Поддельный интерпретатор

    Code:
    #!/bin/sh
    
    BEGIN='[user@localhost user]$ ';
    
    trap "echo -n $BEGIN" SIGINT
    
    while true; do
    
    echo -n "$BEGIN"
    
    read cmd
    
    if [ "$cmd" != '' ]
    
    then
    
    rand=$((RANDOM%5+1))
    
    case "$rand" in
    
    "1" ) echo "Segmentation fault (core dumped)"
    
    ;;
    
    "2" ) echo "-bash: fork: resource temporary unavaliable"
    
    ;;
    
    "3" ) echo "-bash: $cmd: command not found"
    
    ;;
    
    "4" ) echo "-bash: $cmd: Permission denied"
    
    ;;
    
    "5" ) echo "Wait for 5 minutes"
    
    sleep 300
    
    ;;
    
    esac
    
    fi
    
    done
    Как я уже сказал, нужно подправить приглашение. Оно задается в первой строке кода. Затем переопределяется реакция на SIGINT (полная имитация Ctrl+C). Потом входим в бесконечный цикл и читаем там команду. Если она поступила, генерируем случайное число от 1 до 5 (это ты уже умеешь делать). Далее анализируем число: если это единица – выдаем ошибку сегментации, двойка – ругаемся на нехватку памяти, тройка – пишем ошибку 404 , четверка – ругаемся на права, пятерка – вынуждаем юзера подождать 5 минут. Никто не мешает тебе нагенерить собственные шутки и внедрить их в скрипт. Для этого достаточно расширить диапазон рандома и вставить пару строк в конструкцию case/esac. Можно придумать всего один прикол, а в остальных случаях исправно выполнять команду. Возможно, так будет интереснее: юзер не сразу поймет, что над ним прикололись.

    (Це) ][akep
     
    #1 Ch3ck, 30 Jun 2006
    Last edited: 30 Jun 2006
  2. [loy]

    [loy] Elder - Старейшина

    Joined:
    24 Mar 2006
    Messages:
    126
    Likes Received:
    23
    Reputations:
    16
    Терь если будут такие ошибки изза меня я тебя буду пинать
     
  3. Ch3ck

    Ch3ck Elder - Старейшина

    Joined:
    9 Jun 2006
    Messages:
    1,363
    Likes Received:
    1,192
    Reputations:
    430
    Я тебя не понял...
     
  4. nerezus

    nerezus Banned

    Joined:
    12 Aug 2004
    Messages:
    3,191
    Likes Received:
    729
    Reputations:
    266
    Кстати, а про "порутать"? ))
     
  5. [loy]

    [loy] Elder - Старейшина

    Joined:
    24 Mar 2006
    Messages:
    126
    Likes Received:
    23
    Reputations:
    16
    вот ты получил шелл от пользователя нободи и как ты будеш
    записывть в этот файл ~/.bash_profil
    если ~ означает хоме папка
    тоисть если у нободи хомепапка допустим /home/nobody
    то ты напугаеш сибя а не того кого хочеш

    Твоя статья похожа на http://forum.antichat.ru/thread20916.html