Доброго времени суток господа не буду разводить воду сразу к делу. Мне часто как и любому пентестеру приходится прибегать так сказать к автоматизированным средствам проведения пентестов, среди которых можно отметить как и опенсорс так и комерческие продукты. Естественно платить за "более менее" проработанный продукт мне как и всем Вам не особо то хочется(ибо зачастую много фолсов, логов и платить за 1дай уязвимости/сплоеты как то не канает согласитесь), при том как обладая некоторыми знаниями в области реверса и крэкинга в частности я ломаю эти так называемые комерс продукты для личного пользования. Недавно опять встала задача автоматизации прогона одной сети на метод пробива через 1дай уязвимости при помощи существующих продуктов которые могли бы это сделать. Естественно как и подобается правильному пентестеру были выбраны соотвествующие продукты : Metasploit Pro 4.8 от Rapid7 Tenable Nessus 5.2.5 от Tenable Network Security Эти продукты впрочем можно получить в виде триальной серии действующей 7 дней (в обоих случаях). Кстати хоть и триал но все же работают они как полноценные продукты, так что не путаем триал с демо. Конечно рассматривать 7 дней как принцип одноразовой проверки я не стал поэтому было решено об "продлении срока триала" насколько это возможно и естественно в дело пошел старый добрый битхак скриптхак. Да разработчики таких комерс продуктов ныне кодят свои продукты не на сях и не на прочем добре а на руби. Поснифав трафик через сслстрип я честно говоря ох*ел от происходящего. После регистрации он выкладывает свои ключики в директорию dir_metasploit/apps/pro/engine/license. Для поциента Метасплоет Про 4.8 скриптхак в целом понадобился для облома даты в одном месте. Пропатчив таким образом PHP: def expired? @expiration < Time.now end на def expired? @expiration > Time.now end я получил желаемый результат. На это правда не остановился и переломал все что возможно PHP: def seconds_until_expired return 0 if @expiration.nil? #return expiration.to_i - Time.now.utc.to_i меняем местами и получаем обратный ход времени, лол. return Time.now.utc.to_i - expiration.to_i end теперь по истечении срока триала срок нашей лицензии не кончается а наоборот увеличивается, например если у вас рега лицензии была 17 марта 2014 как у меня, то 17 марта 2015 года у вас останется до окончания лицензии ~365,5 дней. Есть правда отдельные скрипты которые не работают без отвязки , там отдельная история но принцип почти тот же. отключаем посредством коментариев места запроса лицензии и все работает без триала. Кстати функция считывания ключа с триалки находится в классе контроллере лицензий licenses_controller.rb : PHP: def offline_activation temp = nil if params[:activation_file] # Copy the uploaded file to a tempfile temp = ::Rex::Quickfile.new('activate') uploaded_io = params[:activation_file] begin while (buff = uploaded_io.read(1024*64)) temp.write(buff) end rescue ::EOFError end temp.flush end # Just present the user with the form if not temp return end begin # Explicitly close the file to prevent locking issues path = temp.path temp.close rescue nil @license.activate_offline(path) if @license.activated? and not @license.error flash[:notice] = "Activation Successful" redirect_to root_path else flash[:error] = "Activation Failed: #{@license.error}" end rescue Exception => e flash[:error] = "Activation Failed: #{e.message}" end end Из класса license.rb : require "digest/sha1" attr :product_serial attr :product_key Ключ procuduct.lic сгенерен и зашифрован посредством алго sha1. По идее если кому хочется можно разобрать всю тему и генерить ключики lic и продавать хомячкам от имени Rapid7 Окей, поциент #2 Nessus : Ну чо сказать явно не лучше, разрабы вообще долбоебы объебывается банальной прокруткой времени назад. Вот обычный 7days триал : https://www.dropbox.com/s/ap83p2qqx6k834u/nessus_trial.png Окей, крутим время назад : date -s "11 MAR 2014" : https://www.dropbox.com/s/mrsh0jv0fbsgro7/xpng.png Что мы видим ? 13 дней, на скрине как видно все функции продолжают работать. Для конкретного обломного пиздеца создал прошку которая посредством LD_PRELOAD меняет env окружение для демона /etc/init.d/nessusd таким образом что получаем фулл анлим лицензию https://www.dropbox.com/s/ca39wfml701eiwj/untrialed.png Сообственно Nuff Said ? Итак цены цены цены : http://www.rapid7.com/store/index.jsp?p=price максимальная цена на msf экспресс на уникальных 1024 IP: 10,000$ разницы особой не заметите от про версии : https://community.rapid7.com/docs/DOC-2280 Если посмотреть классы лицензий там можно понять что несложно портировать двиг на под другие нужды : PHP: def pro? product_type == "Metasploit Pro" end def express? product_type == "Metasploit Express" end def community? product_type == "Metasploit Community" end Что касается Nessus : 1.500 USD https://store.tenable.com/index.php?main_page=product_info&cPath=1&products_id=7 Т.е если рассматривать те же 1024 уник айпи то 1024 x 1,5k $ = 1.536.000 $ мы и так можем ее использовать без всяких ограничений. Выкладываю архив с патчами, скринами : https://www.dropbox.com/s/n61i9yia4mtm7ip/metasploit_patch.zip PS.PS.: для метапслойта про можно кстати не замарачиваться с лицензиями и пойти более законным путем был найден путь постоянного слива легальных триальных лицензий по времени истечения триала. Алго такой удаляем все ключи в директории PHP: 1) rm -rf msf_dir/apps/pro/engine/license/* Далее перезагружаем метасплоент : 2) msf_dir/scripts/stop.sh и start.sh 3) запускаем $ msf_dir/msfpro открывается брауз нажимаем рекуэст имена и данные пользователя можно оставлять теми же. единственное меняем почту, по умолчанию девелоперы не принимают почты типа gmail, mail, rambler, yahoo, etc. регаем быстро новую почту на inbox.uz(обычно [email protected], tmp2, tmp3, etc) можно написать бота даже потому что триальные ключи с той стороны раздаются посредством такого же бота, который ничего не проверяет кроме почты.