вторник, 28 февраля 2012 г.

Кольцо всевластия или невидимость в действии

Недавно начал читать интересную книжку под названием «Физика невозможного». И при рассмотрении теории невидимости там есть занимательный кусок.
В своем философском труде «Государство» Платон поведал нам миф о кольце Гига. В этом мифе бедный, но честный пастух Гиг из Лидии проникает в тайную пещеру и находит там гробницу; у трупа на пальце он видит золотое кольцо. Далее Гиг обнаруживает, что кольцо обладает волшебной силой и может делать его невидимым. Бедный пастух буквально пьянеет от власти, которую дало ему кольцо. Пробравшись в царский дворец, Гиг при помощи кольца соблазняет царицу, затем с ее помощью убивает царя и становится следующим царем Лидии.

Платон писал: «Ни один из них [обладателей перстня невидимости] не оказался бы настолько твердым, чтобы остаться в пределах справедливости и решительно воздержаться от присвоения чужого имущества и не притрагиваться к нему, хотя каждый имел бы возможность без всякой опаски брать что угодно на рыночной площади, проникать в дома и сближаться с кем вздумается, убивать, освобождать из заключения кого захочет — вообще действовать среди людей так, словно он равен богу… Если человек, овладевший такою властью, не пожелает когда-либо поступить несправедливо и не притронется к чужому имуществу, он всем, кто это заметит, покажется в высшей степени жалким и неразумным...»

Мораль, которую Платон вывел из этой истории, состоит в том, что ни один человек не в состоянии устоять перед искушением брать чужое и убивать безнаказанно. Люди слабы, а мораль — социальное явление, которое необходимо насаждать и поддерживать извне. На публике человек может соблюдать нормы морали, чтобы выглядеть порядочным и честным и поддерживать собственную репутацию, но стоит дать ему возможность становиться невидимым, и он не сможет удержаться и непременно воспользуется своим новым могуществом. (Некоторые считают, что именно эта притча о морали вдохновила Дж.Р.Р. Толкина на создание трилогии «Властелин колец»; кольцо, делающее своего владельца невидимым, одновременно является источником зла.)
Так к чему это я? А к тому, что на текущий момент автомобиль дает некоторую изолированность от внешнего пространства, своего рода невидимость. Особенно полностью затонированная машина. И при отсутствии должного рода сдерживающих факторов все могут творить все что угодно. Причем мораль в данном случае не работает, мы осуждаем машину конкретного человека, а не его самого, т.к. машина словно маска скрывает своего хозяина.
Мораль можно заменить только большими штрафами, именно они могут снять маску и показать истинное лицо.


VS



среда, 8 февраля 2012 г.

CIS Redhat

Кст, вышла новая версия стандарта от CIS по проверке RHEL - CIS Red Hat Enterprise Linux 5 Benchmark v2.0.0. Прошло больше 2,5 лет после последних изменений:

https://benchmarks.cisecurity.org/tools2/linux/CIS_Redhat_Linux_5_Benchmark_v2.0.0.pdf

четверг, 26 января 2012 г.

CTF tips

Здесь буду записывать некоторые интересные векторы атак с проходивших CTF.
Vector#1

Уязвимость в create_function в php:
http://seclists.org/bugtraq/2008/Sep/274
код инжектися напрямую в c-шный код и оттуда вызывается.

Куча ссылок по pentest:

http://code.google.com/p/pentest-bookmarks/wiki/BookmarksList

пятница, 21 октября 2011 г.

Tips&tricks Sybase ASE

В Sybase ASE, в отличие от MS SQL Server, нельзя напрямую результат exec записать в таблицу и затем считать оттуда нужные данные. Но можно создать так называемую proxy таблицу, которая будет связана с указанной процедурой. И каждый раз при запросе будет вызываться наша процедура. За данную наводку спасибо умному человеку Rob Verschoor:

http://www.sypron.nl/proctab.html

Затем, если вам нужно вывести бинарные данные, которые в базе сохранены примерно как 0x10efbbe, то в MS SQL Server это довольно не тривиально, нужно очень заморачиваться с xml. В противном случае при обычном convert получите на выходе пару иероглифов. В Sybase ASE это решается очень простой функцией bintostr:

http://infocenter.sybase.com/help/index.jsp?topic=/com.sybase.infocenter.dc36271.1502/html/blocks/CIHHCBAF.htm

пятница, 7 октября 2011 г.

IBM DB2

По работе пришлось в течение некоторого времени разбираться с СУБД IBM DB2. Т.к. система коммерческая, то в интернете не так много информации на русском языке, поэтому решил описать некоторые особенности работы этой СУБД.

Точка входа


Начнем со входной точки в СУБД. В SQL SERVER конечной точкой является экземпляр (instance), в котором конечно могут быть отдельные базы данных, но конфигурация и модель безопасности единая для всего экземпляра. В DB2 же точка входа выглядит так - экземпляр (который соответствует конкретному порту) - база данных. При этом конфигурация есть и для целиком экземпляра, и для отдельной базы данных.

Посмотреть конфигурацию экземпляра можно либо с помощью db2-команды:

get database manager configuration


Database Manager Configuration

Node type = Enterprise Server Edition with local and remote clients

Database manager configuration release level = 0x0b00

CPU speed (millisec/instruction) (CPUSPEED) = 2.912790e-07
Communications bandwidth (MB/sec) (COMM_BANDWIDTH) = 1.000000e+02

Max number of concurrently active databases (NUMDB) = 8
Federated Database System Support (FEDERATED) = YES
Transaction processor monitor name (TP_MON_NAME) =

Default charge-back account (DFT_ACCOUNT_STR) =

Java Development Kit installation path (JDK_PATH) = /home/db2inst1/sqllib/java/jdk32

Diagnostic error capture level (DIAGLEVEL) = 3
Notify Level (NOTIFYLEVEL) = 3
Diagnostic data directory path (DIAGPATH) = /home/db2inst1/sqllib/db2dump

Default database monitor switches
Buffer pool (DFT_MON_BUFPOOL) = OFF


Где будут указаны параметры, их значение и расшифровка. Возможен также сокращенный вариант:

get dbm cfg

Либо с помощью запроса:

select name, value from sysibmadm.dbmcfg

Из важных параметров можно отметить:
  • тип аутентификации (AUTHENTICATION)
  • путь по умолчанию для создания новых БД (DFTDBPATH)
  • обнаружение сервера по сети (DISCOVER)
Посмотреть настройки конкретной базы можно так:

connect to sample (sample - имя бд)

get database manager configuration


Либо примерно таким же запросом, как и ранее:

select name, value from sysibmadm.dbcfg

Аутентификация


Большим отличием DB2 от других СУБД является модель аутентификации. Здесь нет внутренних пользователей, как в SQL Server или MySQL. Вся аутентификация производится внешними по отношению к СУБД средствами (динамически подгружаемыми плагинами) - средствами операционной системы либо внешними плагинами (Kerberos,GSS API). Тип аутентификации задается в параметре AUTHENTICATION конфигурации менеджера БД. По умолчанию выставлено значение SERVER - имя пользователя и пароль передается в открытом виде и данная пара проверяется на правильность средствами операционной системы. Если имя пользователя и пароль верны, то проверяется наличие привилегии CONNECT у пользователя или групп, в которые он входит (в т.ч. специальная группа PUBLIC, куда входят все авторизованные пользователи). Данные привилегии можно посмотреть в таблице SYSCAT.DBAUTH:

select GRANTEE from SYSCAT.DBAUTH where CONNECTAUTH = 'Y'

Большой ошибкой при настройке является включение типа аутентификации CLIENT. В этом случае DB2 доверяет проведение аутентификации подключаемому клиенту и если у PUBLIC есть привилегия CONNECT, то любой пользователь сможет подключиться к БД и получит доступ ко всем данным, которые есть у PUBLIC. Имя пользователя при этом берется из операционной системы. То есть если мы подключаемся через Data Studio пользователем Administrator, то будут предоставлены все привилегии, которые есть у данного пользователя. И в этом случае нет разницы, с какого компьютера был произведен доступ. Данный тип аутентификации рекомендуется включать только тогда, когда есть защищенный канал между сервером и клиентом, и другие клиенты не смогут подключиться к СУБД.

Авторизация


Привилегии уровня конкретного экземпляра прописываются в конфигурации менеджера БД. Это следующие привилегии:
  • SYSADM
  • SYSCTRL
  • SYSMAINT
  • SYSMON
Задаются данные привилегии с помощью указания группы, куда будет входить пользователь. В dbmcfg это соответственно параметры SYSADM_GROUP, SYSCTRL_GROUP, SYSMAINT_GROUP и SYSMON_GROUP.

Далее есть привилегии конкретной базы данных. Это такие привилегии, как доступ к базе данных (CONNECTAUTH), создание таблиц (CREATETABAUTH), создание подпрограмм (EXTERNALROUTINEAUTH) и тд. Данные привилегии можно просмотреть в представлении SYSCAT.DBAUTH

И наконец привилегии доступа к конкретным данным - таблицам, подпрограммам и тд. Здесь все довольно тривиально, но тоже с некоторыми особенностями.

Привилегии доступа к таблицам можно просмотреть в представлении SYSCAT.TABAUTH. Тип выданной привилегии хранится в отдельных колонках, в зависимости от самой привилегии (SELECTAUTH,DELETEAUTH и тд). При выдачи привилегии с помощью команды GRANT для привилегий REFERENCES и UPDATE можно также указать имена колонок, на которые будут распространяться данные привилегии. В этом случае информацию об этом можно посмотреть в представлении SYSCAT.COLAUTH

Привилегии подпрограмм (функций, процедур и методов) можно посмотреть в SYSCAT.ROUTINEAUTH. Здесь не совсем все тривиально, в зависимости от полей SPECIFICNAME и TYPENAME привилегии могут быть выданы на все подпрограммы заданной схемы.

Если читателям понравится статья, то готов рассказать по поводу защиты данных в DB2 с помощью Label-Based Access Control

пятница, 9 сентября 2011 г.

На первый раз сойдет

С приходом Собянина многое в столице стало меняться. Самые значительные положительные изменения, которые описывали СМИ и различные блоггеры - это укладка плитки вместо асфальта на тротуарах, новые парковочные места для машин и недавнее событие - велосипедная дорожка на проспекте Вернадского. И при реализации всего этого как обычно нашлись косяки и результат только на словах.

Плитку кладут как попало, с зазорами, не выравнивая поверхность, кладут плитку со сколами и тд. Новые парковочные места делаются на бумаге, в реальности на одно парковочное место может поместиться только треть машины или один велописед (http://www.ridus.ru/news/1110/). А велосипедную дорожку просто нарисовали на существующей автомобильной дороге, не заморачиваясь на люки, ограждения на пути, штрафы водителям, которые едут по этой дороге. Но удивление вызывает не это, к такому поведению все давно привыкли и никто особо не возмущается (но и одобрения нет). Удивляет отношение некоторых людей - "хорошо, что хоть что-то делают". То есть наши люди настолько привыкли, что государство вообще ничего не делает, что даже откровенную халтуру начинает одобрять. Такое ощущение, что государство все это делает бесплатно, на деньги, которые упали с неба и поэтому что же с них требовать.

Касаемо плитки некоторые личности вообще пишут "что это же первый опыт, когда будут перекладывать, уложат лучше". Извините, а почему это первый опыт? Я могу сказать это про себя, если я вдруг буду укладывать плитку на даче и положу ее криво и с щелями. У меня это действительно будет первый опыт и что с меня еще требовать. Но ведь строители-то не первый раз этим занимаются (по крайней мере должно быть так).

И скажите, если у вас строители будут делать ремонт дома, и сделают его как попало, вы тоже будете говорить "ну это ведь первый раз, на следующий год гораздо лучше будет" или будете требовать переделать или вернуть деньги? Более чем уверен, что второе. Так почему тогда при этих же работах, но в рамках города мы думаем иначе?

среда, 17 августа 2011 г.

О наболевшем

Как-то раз я говорил, что в пробках виноваты сами водители, что зачастую именно они и создают заторы, выезжая на светофор на мигающий зеленый или объезжая пробку по обочине. Но за время езды в этих же пробках было время тщательно подумать, и проанализировать действия водителей. Так вот, все-таки виновато правительство (власть, полиция и тд). Объясню почему.

Большинство людей представляет собой безликую массу, у которой нет своего мнения, нет права выбора и им по сути ничего не нужно. И есть некоторое количество людей, которые в той или иной мере представляют собой личность. Порой хорошую личность, порой плохую личность, которая лучше бы была частью безликой массы, но все равно личность. Личность обладает способностью думать и принимать решения. И безликая масса часто следует за этой личностью, даже не задумываясь о характере ее поведения, причинах и тем более последствиях.

Примеров такого стадного поведения можно привести очень много. В стандартной ситуации, когда образуется небольшой затор на дороге, n-ное время все дружно стоят и радуются жизни (безликая масса). Но стоит найтись одной личности, которая ставит себя выше этой массы и объезжает всех по обочине, то часть этой массы сразу же следует за ним. Пусть это будет пример "темной" личности. Есть и "светлые" личности, которые перегораживают дорогу массе, заставляя вернуть обратно, но таких меньшинство и с них редко кто берет пример.

И правительство в данной ситуации должно регулировать такие ситуации, т.к. масса всегда будет пытаться выйти из дозволенных границ. И возвращать обратно нужно только ударами кнута, что в данном случае означает очень высокие штрафы. Личности останутся и в этих случаях, но на то они и личности. И только тогда по двухрядной дороге будет ехать 2 ряда, а не 5, как сейчас.