Перехватить доступ к MS SQL CE

Тема в разделе "WASM.WIN32", создана пользователем MoKC0DeR, 19 июн 2009.

  1. MoKC0DeR

    MoKC0DeR New Member

    Публикаций:
    0
    Регистрация:
    13 ноя 2003
    Сообщения:
    136
    Адрес:
    Russia
    Есть прога (написана под .NET) которая хранит всю инфу в базе MS SQL Compact Edition. База защищена паролем (при открытие вне программы спрашивается)
    Вопрос как узнать пароль ?
     
  2. mrcrown

    mrcrown Member

    Публикаций:
    0
    Регистрация:
    18 янв 2008
    Сообщения:
    227
    Дать программеру, или админу по е**лу, сломать ему парочку пальцев и он точно скажет!
    А если серьезно, то можно разными путями, хукать ф-ции, дебагать прогу.
     
  3. megaaa

    megaaa New Member

    Публикаций:
    0
    Регистрация:
    29 май 2009
    Сообщения:
    51
    самый тупой и просто вариант это кейлоггер
    так же может пароль в памяти программы по опрделенному смещению где нить храниться после ввода, вариантов массу можно подобрать
     
  4. mrcrown

    mrcrown Member

    Публикаций:
    0
    Регистрация:
    18 янв 2008
    Сообщения:
    227
    Самый главный вариант, это прочитать внимательно САБЖ!
     
  5. ring4

    ring4 New Member

    Публикаций:
    0
    Регистрация:
    19 ноя 2006
    Сообщения:
    279
    MoKC0DeR
    поковыряй прогу с помощью .NET Reflector
    может по тупости пароль в открытом виде, в программе.
     
  6. mrcrown

    mrcrown Member

    Публикаций:
    0
    Регистрация:
    18 янв 2008
    Сообщения:
    227
    Ну почему по тупости, я конечно не берусь утверждать, но думаю, что пароль в ф-цию коннекта/авторизации БД передается в открытом виде! Хотя ХЗ с .НЕТ не имел дела
     
  7. BaGiE

    BaGiE New Member

    Публикаций:
    0
    Регистрация:
    27 мар 2005
    Сообщения:
    84
    Адрес:
    Mordor
    Какая версия SQL CE: 3.1 или 3.5?
     
  8. BaGiE

    BaGiE New Member

    Публикаций:
    0
    Регистрация:
    27 мар 2005
    Сообщения:
    84
    Адрес:
    Mordor
    Обычно конечно connectionString лежит в открытом виде, но куда интереснее поковырять Query Processor для SQL CE вот поэтому и интересно какая версия СУБД.
     
  9. megaaa

    megaaa New Member

    Публикаций:
    0
    Регистрация:
    29 май 2009
    Сообщения:
    51
    не понял, кто то вводит пароль, все клавиши от кейлоггера у тебя окажутся
    ведь если ты отснифаешь пароль, значит сможешь открыть базу, где я что то не так понял?или ТС имел ввиду что никого троянизировать не надо :)
    можно реверснуть саму программу и хукнуть ф-цию которая отвечает за авторизацию
     
  10. BaGiE

    BaGiE New Member

    Публикаций:
    0
    Регистрация:
    27 мар 2005
    Сообщения:
    84
    Адрес:
    Mordor
    короче поглядел.

    1. Возьми OllyDbg
    2. Поставь бряк на функе ME_OpenStore в либе sqlceme35.dll если SQL CE v3.5 или в либе sqlceme30.dll если SQL CE v3.1 или v3.0
    3. Когда брякнется на этой функе чуть ниже в стеке увидишь UNICODE строку содержащую путь к БД и след. параметр - пароль
     
  11. mrcrown

    mrcrown Member

    Публикаций:
    0
    Регистрация:
    18 янв 2008
    Сообщения:
    227
    Чувак, ты МОЧИШЬ!
    Объясню на пальцах!
    Есть прога, она работает с БД, если эту базу открывать не через прогу, просит ПАСС. Здравая логика подсказывает, судя по всему не всем, что пасс забит в прогу, или в конфиги проги.
    Это уже ближе :))
     
  12. megaaa

    megaaa New Member

    Публикаций:
    0
    Регистрация:
    29 май 2009
    Сообщения:
    51
    mrcrown
    понятна задача, просто ситуацию не совсем так понял, темболее BaGiE уже вариант предложил.
     
  13. mrcrown

    mrcrown Member

    Публикаций:
    0
    Регистрация:
    18 янв 2008
    Сообщения:
    227
    Да? Ты первый ответ почитай :)
     
  14. irrona

    irrona Member

    Публикаций:
    0
    Регистрация:
    26 май 2004
    Сообщения:
    178
    Адрес:
    Тирасполь
    BaGiE

    Хотелось бы узнать каким образом запустить в OllyDebug .NET-приложение. У меня не получается. Я тоже недавно прогу точил на VB.NET 2005 для работы с базой SQL Server 2005. Строку подключения сохраняю в Settings проекта. Просто интересно стало, можно ли "в принципе" эту строку вытащить оттуда. Пока у меня складывается такое впечатление, что строка эта передается SQL Server-у в зашифрованном виде.
     
  15. BaGiE

    BaGiE New Member

    Публикаций:
    0
    Регистрация:
    27 мар 2005
    Сообщения:
    84
    Адрес:
    Mordor
    irrona

    Запустить дотнетовское приложение можно точно также как и обычное :) Просто из управляемого кода .NET в данном случае всё равно идут вызовы к ядру СУБД, который написан на обычном C++ Поэтому не парясь что там делает дотнет можно отлаживать именно этот неуправляемый код ядра SQL Server Compact. В ольке такая программа сразу запустится, но никто не мешает дальше брякнуться в любом месте, в данном случае в sqlceme**.dll и глядеть что и как :) Предложенный мною метод в посте #10 будет работать, если .NET приложение использует свой поставщик данных и пространство имен System.Data.SqlServerCe, что скорее всего и есть. Если же используется OLEDB, то он работать не будет и надо глядеть внутрь sqlceoledb**.dll или сразу sqlcese**.dll

    Насчет обычного SQL Server. Строка подключения не передается SQL Server'у, она передается поставщику данных (или оболочке для поставщиков), который распарсит эту строку, а там уже неизвестно что. По-моему момент авторизации в Microsoft SQL Server (по крайней мере в 2005+ точно) проходит с шифрованием данных по сети. А еще может вообще быть обмен "over SSL" так что в этот момент "стырить" пароль сложно, а вот похукать что-нибудь в дата-провайдере вполне можно. Чтобы не было таких нарушений безопасности и придумали режим Integrated Security (Windows Authentication), а Mixed Mode (+SQL Authentication) по-умолчанию выключен и включать рекомендуется только если доступ к SQL Server будет происходить для систем, отличных от Windows и не поддерживающих данного метода авторизации. Я не знаю что конкретно там за метод, но наверное NTLM\Kerberos. Да и такая сквозная проверка подлинности намного удобнее, а если развернута служба каталогов Active Directory, то совсем отлично будет.
     
  16. ring4

    ring4 New Member

    Публикаций:
    0
    Регистрация:
    19 ноя 2006
    Сообщения:
    279
    irrona
    BaGiE
    на кой черт вам нужен olly когда .NET Reflector полностью раскрывает код .net приложения.
     
  17. BaGiE

    BaGiE New Member

    Публикаций:
    0
    Регистрация:
    27 мар 2005
    Сообщения:
    84
    Адрес:
    Mordor
    ring4
    как раз сам код приложения абсолютно не интересен, неужели непонятно? :) интересно то, ЧТО он вызывает и КУДА вызывает и отлаживать именно уже там, а ТАМ уже совсем другая каша :) впринципе разобравшись один раз можно написать мини-утилиту, которая бы автоматом хучила всё это дело и сразу выдавала пароль, например к БД.
     
  18. MoKC0DeR

    MoKC0DeR New Member

    Публикаций:
    0
    Регистрация:
    13 ноя 2003
    Сообщения:
    136
    Адрес:
    Russia
    mrcrown, megaaa
    иногда лучше ничего не писАть...
    увы нету, более того на большинство выдает - "This item appears to be obfuscated and can not be translated."
    3.5
    Спасибо - ушел пробовать.
     
  19. MoKC0DeR

    MoKC0DeR New Member

    Публикаций:
    0
    Регистрация:
    13 ноя 2003
    Сообщения:
    136
    Адрес:
    Russia
    BaGiE
    Работает! Тема закрыта.
     
  20. skimitar

    skimitar New Member

    Публикаций:
    0
    Регистрация:
    7 фев 2012
    Сообщения:
    1
    Уважаемые гуру!
    Перерыл весь интернет , и только на Вашем форуме нашел нужное мне решение. В посте № 10 Вы предлагаете решение проблемы доступа к запароленной базе данных MS SQL CE. У меня такая же проблема. Есть прога, использующая MS SQL CE 3.5, но, к сожалению, Ваш метод не помог, обнаружить пароль с помощью OllyDbg так и не удалось, да я и не слишком спец в этом. Не могли бы Вы мне помочь, взглянуть на dll библиотеки от моей программы, доступ к базе которой я не могу получить. все необходимые dll могу выслать или выложить куда скажете. Заранее спасибо, на Вас одна надежда.