Почему протокол NTLM устарел

Аутентификационный протокол NTLM является устаревшим, так как обладает недостатками, которые могут скомпрометировать безопасность приложений и операционной системы. Отсутствие серверной аутентификации — одна из главных проблем, позволяет хакеру обмануть пользователей и заставить их подключиться к взломанному серверу.

Как следствие отсутствия серверной аутентификации, приложения, использующие NTLM могут быть уязвимы к атакам типа «отражение« Идея такой атаки состоит в том, чтобы запутать целевой компьютер в Challenge-response authenticationи заставить его  правильно ответить на свой же запрос инициировав новое встречное подключение с теми же параметрами. Правильный ответ можно использовать для дальнейшего нормального процесса аутентификации.

Хотя протокол Kerberos доступен уже долгие  годы, множество приложений продолжают поддерживать только NTLM режим, что существенно ухудшает безопасность системы. Однако Kerberos не может заменить NTLM во всех сценариях, например, когда клиент аутентифицируется в системе, но не состоит в домене. В таком случае необходимо использовать протокол Negotiage, который использует Kerberos всегда, когда это только возможно и переключается на совместимость с NTLM только когда нет возможности работы по Kerberos.

Стоит помнить, что Negotiage не серебряная пуля — можно найти случаи, в которых атакующий может соединиться через NTLM, но такие случаи более редко и трудно эксплуатируемы. Как минимум, приложения, правильно переписанные на Negotiate перестают страдать от уязвимости к NTLM атакам типа «отражение».

Еще одним предостережением против использования NTLM является возможность прекращения поддержки NTLM в новых версиях Windows, такие приложения просто не смогут аутентифицироваться.

 

По материалам ServerFault.

Необычный способ делать деньги

tuvalu1

Тувалу — крошечный полинезийский остров с населением всего лишь  10 тысяч человек. Основные доходу государству приносит рыболовств и доверительный фонда Тувалу, заработок на туризме ничтожен. После обретения независимости от Британии, остров сильно зависит от иностранной помощи.

Звездный час страны настал с появлением и интернета и получением домена .tv. Правительство заключило договор с канадским бизнесменом Jason Chapnik и получило 20% в компании DotTV. Первый платеж в 18 миллионов долларов удвоил ВВП страны. Verisign приобрел DoTV в 2002 году и продлил соглашение по управлению доменом .tv до 2021 года.

Такой дополнительный источник дохода позволил стране Тувалу стать финансово независимой и даже вступить в ООН. Членство в ООН стоит 20 тысяч долларов в год, что раньше было слишком большой суммой для небольшой страны. Вливания пошли на пользу инфраструктуре, развитию дорог, электрической сети и школ, Тувалу даже экспортирует еду!

Ссылки:
Economy of Tuvalu

What are some unusual ways by which people make money

Как добавить рабочий стол с поддержкой RDP для Amazon EC2 Ubuntu

Ниже предлагается один из самых быстрых способов поднять удаленный рабочий стол для северного дистрибутива Ubuntu — решение работает на Amazon Web Services. Достоинством RDP в отличие от VNC является возможность «из коробки» подключаться из Windows без установки дополнительных программ — достаточно выполнить команду mstsc для открытия терминала.

sudo apt-get update
sudo apt-get install lxde
sudo start lxdm
sudo apt-get install xrdp

Так же необходимо задать пароль, к примеру, для пользователя по умолчанию ubuntu:

sudo passwd ubuntu

Единственным недостатком решения является то, что повторное подключение приводит к запуску новой сессии. В качестве временного исправления можно использовать правку файла /etc/xrdp/xrdp.ini с заданием port=-1 в секции [xrdp1], но это работает только при подключении к уже запущенной последнее сессии, при перезагрузке компьютера почему-то необходимо вернуть значение порта по умолчанию.

Профилирование производительности приложения без установки Visual Studio

Думаю, многие программисты пользовались средствами анализа производительности, удобно интегрированных прямо в Visual Studio. Процесс настолько интуитивно понятен из графического интерфейса, что совсем не приходится задумываться, что в действительности, за сбор статистики работы приложения отвечает консольное приложение VsPerfCmd. Задумываться о том, что «под капотом» может понадобиться, если, к примеру, нужно собрать данные на компьютере без установленной Visual Studio. Сразу в голову приходит аналогия с удаленной отладкой, но в данном случае всё даже проще — специальный сервис просто собирает статистику в файл результатов, который потом можно открыть Visual Studio или добавить к существующим отчетам анализа производительности. Единственное требование — к исследуемым dll и exe файлам должны быть скопированы pdb-файлы, в противном случае проанализировать узкие места не удастся. Итак, первым делом, нужно установить сервис сбора статистики, инсталлятор находится в %VSInstallDir% Team ToolsPerformance ToolsSetups. Для VS 2012 — «C:Program Files (x86)Microsoft Visual Studio 11.0Team ToolsPerformance ToolsSetupsvs_profiler_x64_enu.exe»

Далее — запускаем сервис с нужным типом анализа и параметрами анализируемого приложения(путь и параметры командной строки). Ниже приведен скрипт на Powershell, который позволяет автоматизировать процесс присоединения к процессу и остановки сбора статистики при выходе из приложения. При подобной автоматизации процесс сбора и анализа производительности на удаленной машине не отличается от аналогичного процесса работы прямо из Visual Studio.

$tool = "C:Program Files (x86)Microsoft Visual Studio 11.0Team ToolsPerformance ToolsVSPerfCmd.exe"
$toolProcess = Start-Process $tool -ArgumentList "/Start:Sample /Output:c:perfstats2.vsp /Launch:""$analyzedProgramPath"" /Args:args "
$processName = [io.path]::GetFileNameWithoutExtension($analyzedProgramPath)
for ($i=0; $i -lt 1000; $i = $i+1) {
    $p = get-process ProcessName -ErrorAction SilentlyContinue<
    if (!$p) { break; }

    sleep -s 1 } Write-Host "Stopping collect..." $tool /Shutdown /Analyze:Procid

 

Если нужно подключиться к ранее запущенному процессу, например, к сервису можно пользоваться опций Attach.

 

LINT для английского языка

Модуль  write-good  для NodeJS предназначен для проверки текстов на английском на «академичность» стиля. Автор поставил себе задачу автоматизацию трех проблем в научных текстах:

1. Чрезмерное использование Passive Voice. Помимо того, что большое количество пассивного залога ухудшает стиль текста, в научной статье это, как правило, связано с сокрытием существенной информации или неполноте фактов. Пример:

Плохо:        Termination is guaranteed on any input.
Лучше:       Termination is guaranteed on any input by a finite state-space.
Хорошо:     A finite state-space guarantees termination on any input.

2. Обтекамые выражения и лишние слова

Плохо:    It is quite difficult to find untainted samples.
Лучше:    It is difficult to find untainted samples.

Часто студенты в работах используют «ленивые» слова, чтобы избежать необходимости количественного описания. Например, several, exceedingly, many, most, few, vast.

Плохо:    There is very close match between the two semantics.
Лучше:    There is a close match between the two semantics.

3. Лексические иллюзии. Очень сложно заметить повторы слов, когда они разделены переносом строк.

Конечно, реализация очень несложная, но может быть интересна как раз свой простотой, чтобы понять, с чего легче начать разработку анализа текстов.

  Ссылки:

https://github.com/devd/Academic-Writing-Check

http://homepages.ed.ac.uk/martinc/msc/doc/hc.pdf

Марсоход Curiosity: C++ и особенности автономного передвижения

Интереснейший доклад с CPP Con приоткрывает завесу над тем, как устроено управление марсоходом Curiosity.

[youtube=http://www.youtube.com/watch?v=3SdSKZFoUa8&feature=player_embedded]

Одной из основных сложностей в управлении устройством, находящимся на Марсе, является существенное время прохождения сигнала. Лишь в одну сторону требуется 4 минуты 22 секунды. Задача становится еще более трудной, если узнать, что антенны Deep Space Network делятся между многими космическими миссиями. Команда Curiosity может отправлять сигнал всего лишь один раз в сутки, а получать лишь несколько раз в день. Поэтому инженеры в течение дня готовят команды для управления ровером. Команды управления включают в себя управление движением, использование механической руки и проведение экспериментов.

После выполнения команд марсоход отправляет результаты работы и наблюдений на спутник на орбите Марса. Отправка сигнала сразу на Землю, потребовала бы гораздо больше энергии, чем на спутник, находящийся в 322 километрах  на орбите.

Разработка марсохода, способного практически самостоятельно перемещаться по поверхности, является сложной задачей, требующей работы тысяч людей.  Объем работы впечатляет еще больше, если узнать технические характеристики компьютера ровера:  частота процессора 133 МГц и 128 Мб оперативной памяти (адресуемой памяти лишь 32 Мб).

Характеристики Curiosity во втором столбце

Программный код содержит более 100 модулей, каждый из которых общается с другими через очередь сообщений с минимальным числом блокировок и разделяемой памяти. Модуль навигации – один из наиболее объемных и занимает 10% от всего объектного кода.

Большая часть кода для автономного передвижения написана на C++.  Исторически исследователи использовали C++ для разработки высокоуровневых автономных алгоритмов, таких как:  стерео-зрение, построение карт, планирование пути и визуальная одометрия. Однако до 2000 года C++ код никогда не летал на Марс, все модули разрабатывались на языке C.  При разработке марсоходов разработчики оценили, что риск ошибки при переписывании существующего протестированного кода с C++ на C выше, чем использование новой среды на C++.  С++ победил!

Марсоход Curiosity имеет множество стерео-камер, позволяющих надежно оценивать обстановку вокруг, даже если с частью камер возникнут проблемы.

Марсоход умеет передвигаться в нескольких режимах. Во-первых, конечно же, есть полностью ручной режим  прямого управления. Этот режим использовался во время первых движений по планете,  чтобы получить представление о безопасности окружающей территории.

Читать далее Марсоход Curiosity: C++ и особенности автономного передвижения

Как открыть Excel на втором мониторе

Excel (в версии до 2013) обладает поведением, отличающимся от других офисных продуктов, таких как Microsoft Word. Если в Word можно легко открывать документы в разных окнах и соответственно, легко растаскивать их по мониторам, то в Excel по умолчанию все таблицы открываются в одном окне.

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

Cистема модулей C++ уже доступна в Visual Studio 2015

Первое обновление Update 1 к Visual Studio 2015 принесло новую экспериментальную возможность для C++. Долгожданная Система модулей C++, которая возможно войдет в стандарт C++ 17.

Любой, кто разрабатывал большой проект на C++, знаком с проблемами, связанными с необходимостью связывать компоненты через заголовочные файлы. Дупликация между заголовочными файлами и исходным кодом, необходимость использовать идиому PIMPL, не говоря уже об огромных накладных расходах на вычитывание с диска бесконечных цепочек маленьких заголовочных файлов при компиляции

Итак, чтобы попробовать новые возможности, необходимо:

  • Создать исходный файл модуля с расширением ixx (почему-то для cpp файлов это не работает) и использовать ключи компилятора /experimental:module
// file: MyModule.ixx
module M;

export int f(int x)
{
    return 2 + x;
}
export double g(double y, int z)
{
    return y * z;
}
 
    • В файле, куда подключается модуль использовать ключи компилятора /experimental:module /module:reference ../Modules/M.ifc
// file: main.cpp
#include "stdafx.h"
#include <iostream>

import M;

int main()
{
    std::cout<<f(5)<<std::endl;
    std::cout<<g(0.0, 1);
    return 0;
}
 

При компиляции модуля помимо обычного OBJ файла появляется файл IFC, содержащий метаданные об интерфейсе модуля. Представление этого файла основано на работе Gabriel Dos Reis and Bjarne Stroustrup под названием «Внутреннее представление программы», реализацию можно найти на GitHub.

Следует отметить, что пока Visual Studio не предлагает встроенных средств для просмотра интерфейсов модулей, как это сделано, к примеру, для .NET сборок. Ожидаем, что полная поддержка модулей принесет с собой и удобные вспомогательные инструменты для работы с ними

Полный исходный код можно найти на BitBucket

Парижский Диснейленд — маркетинговые успехи и ошибки

По книге Marketing mistakes and successes

C большими ожиданиями Евро-Диснейленд был открыт рядом с Парижем в апреле 1992 года. Успехом были встречены Диснейленды во Флориде, Калифорнии и Японии. Но большие ожидания стали лишь несбыточными иллюзиями. Какие ошибки были сделаны?

Несколько предзнаменований могли заставить задуматься. Между 1987 и 1991 годом во Франции были открыты три парка стоимостью 150 миллионов долларов. После 1991 года два из них обанкротились. Компания Уолт Дисней  решается открыть свой первый европейский Диснейленд в 1992. Более двух тысяч гектар и вложений на 4.4 миллиарда долларов в тридцати километрах к востоку от Парижа. Первоначальная задумка включала шесть отелей с 5200 комнатами (это больше, чем во всех Каннах), эта цифра должна была утроиться по мере работы парка, чтобы посетители задерживались на больший срок.

Также Дисней рассчитывал построить бизнес-центр, лишь немногим меньший, чем La Defense.  Торговые моллы, гостиницы, курсы гольфа и гостевые коттеджи. У руководителей Диснея не было ни малейшего беспокойства по поводу такого огромного предприятия, которое покроет площадь, равную пятой части Парижа. Единственное, что их беспокоило, – парк может оказаться не достаточно большим, чтобы вместить всех желающих.

“Мое самое большое опасение – мы будем  слишком успешны»

“Не думаю, что можем ошибиться. Они мастера маркетинга. Когда парк откроется, он будет идеальным. Они знают, как заставить людей улыбаться – даже французов.»

Менеджеры компании предсказывали, что 11 миллионов европейцев  посетят парк в первый год.  Ведь по меньшей мере 2.7 миллионов европейцев посещали американские Диснейленды и оставляли в них 1.6 миллиарда долларов. Столь близкий парк привлечет еще больше. Парки Диснея в США (с населением 250 миллионов) привлекали 41 миллион посетителей в год, Евро-Диснейленд в той же пропорции может достичь 60 миллионов посещений из Западной Европы (370 миллионов людей). Добавлял оптимизма тот факт, что у европейцев существенно длиннее отпуска, чем у жителей США. К примеру, стандартная практика для Франции и Германии– 5 недель, тогда как в США  3 недели.

Провал трех предыдущих французских парков считался нерелевантным. Robert Fitzpatrick, председатель: “Мы потратим 22 миллиарда французских франков перед тем, как открыть свои двери, на другие парки тратили по 700 миллионов. Мы можем потратить бесконечно больше, чтобы уделить больше внимания детям: на костюмы, отели, магазины, даже  мусорные корзины».

Тем не менее, были несколько редких сигналов  о том, что не все счастливы приходу Диснея. Демонстранты встречали директоров компании  яйцами, кетчупом и знаками “Микки Мауз – уходи домой». Некоторые французские интеллектуалы осуждали культурное загрязнение страны приходом американской культуры.

Выбор места.

При поисках места для Евро-Диснейленда кандидатами были 200 локаций в Европе. Одним из финалистов стала испанская Барселона. Преимуществом Барселоны была более теплая погода, но транспортная система была не так хороша по сравнению с окрестностями Парижа, к тому же возле Барселоны не было земельных участков достаточного размера. Ключевым фактором выбора Парижа стало его более центральное положение.

Свекольные поля Marne-la-Vallee стали итогом выбора. Париж сам по себе притягивал большое число туристов. У Франции был шанс понизить безработицу и повысить свою роль в качестве туристического центра Европы. Правительство Франции ожидало, что проект создаст по меньшей мере 30 000 работ и принесет 1 миллиард в год от иностранных туристов.

Читать далее Парижский Диснейленд — маркетинговые успехи и ошибки

Как Windows хранит информацию о том, что файл загружен из интернета

Многие, наверное, замечали, что если скачивать файлы из интернета при помощи Internet Explorer, то потом такие программы, как Microsoft Word или Excel будут выдавать предупреждение о том, что файл скачан из интернета и является небезопасным. Аналогичное, предупреждение будет получено при попытке установки программ.

Файлы, рассматриваемые Windows как небезопасные, по внутреннему содержимому не отличаются от обычных. Информация о чужеродном происхождении файла записывается в специальные потоки ADS (alternate data stream) файловой системы NTFS

Содержимое потоков ADS можно увидеть с помощью бесплатной утилиты streams из пакета SysInternalsSuite.
Помимо того, сам факт наличия заголовков можно увидеть с помощью стандартной команды dir /r

Информацию в ADS можно добавить самостоятельно. Для этого нужно к имени существующего файла прибавлять через двоеточие имя секретного файла, который не будет виден напрямую в файловой системе. Например, командой notepad.exe file.txt:BigSecret.txt мы запустим блокнот, который запросит создание нового файла file.txt:BigSecret.txt, в который можно ввести любые данные и сохранить как обычный файл. Можно пользоваться стандартными средствами перенаправления потоков ввода-вывода Windows. То есть, чтобы увидеть содержимое файла можно в консоли командой more file.txt:BigSecret.txt

Понятно, что такие данные зависят от основного файла, если удалить файл, то потоковый файл тоже исчезнет

Теперь нам понятно, как повторить поведение windows, для этого нужно просто в файл file.txt:Zone.Identifier записать следующее содержимое:

[ZoneTransfer]
ZoneId=3

Пример bat-файла:

SET OUTNAME=file.msi
echo some data>%OUTNAME%
echo [ZoneTransfer]>"%OUTNAME%:Zone.Identifier"
echo ZoneId=3 >>"%OUTNAME%:Zone.Identifier"

Для быстрого удаления всей информации потоков можно пользоваться ключом -d утилиты streams.

Вдогонку стоит упомянуть о неочевидном факте, обнаруженном в книге The Art of Software Security Assessment. А именно то, что в Windows пробелы и точки в конце имени файла игнорируются. При создании файла c:file.txt…. на диске будет успешно создан(или открыт существующий файл) c:file.txt