Black Hat Conference — конференция по компьютерной безопасности, объединяющая множество людей, интересующихся информационной безопасностью. Конференцию посещают как представители федеральных агентств и корпораций, так и хакеры. Briefings регулярно проходит в Лас-Вегасе, Амстердаме и Токио. Мероприятие, предназначенное специально для Федеральных служб, проводится в Вашингтоне, округ Колумбия.
Предлагаю вашему вниманию видеозапись и слайды одного из наиболее интересных докладов конференции «Ядро Linux, спрятанное внутри Windows 10». Докладчиком выступил небезызвестный исследователь компьютерной безопасности Алекс Ионеску, один из авторов бестселлера «Windows Internals».
Слайды и листинги кода к выступлению Алекса Ионеску. К сожалению, пока доклад доступен только на английском языке.
As it's implemented using a full-blown, built-in, loaded-by-default, Ring 0 driver with kernel privileges, this not a mere wrapper library or user-mode system call converter like the POSIX subsystem of yore. The very thought of an alternate virtual file system layer, networking stack, memory and process management logic, and complicated ELF parser and loader in the kernel should tantalize exploit writers — why choose from the attack surface of a single kernel, when there's now two?
But it's not just about the attack surface — what effects does this have on security software? Do these frankenLinux processes show up in Procmon or other security drivers? Do they have PEBs and TEBs? Is there even an EPROCESS? And can a Windows machine, and the kernel, now be attacked by Linux/Android malware? How are Linux system calls implemented and intercepted?
As usual, we'll take a look at the internals of this entirely new paradigm shift in the Windows OS, and touch the boundaries of the undocumented and unsupported to discover interesting design flaws and abusable assumptions, which lead to a wealth of new security challenges on Windows 10 Anniversary Update («Redstone») machines.
UPD Всех, кого задело отсутствие русского перевода субтитров и содержания видео, приглашаю вместо упражнения в комментариях принять участие в краудсорсинге перевода данного выступления. Процесс идет на ресурсе Нотабеноид. Если у вас нет инвайта, напишите мне в личку.
Записи других выступлений с Black Hat USA 2016.
Комментарии (80)
VaalKIA
15.10.2016 14:28+33Пусть меня жутко заминусуют, но текстовый транскрипт не на русском языке, да ещё и в виде статьи — это уже хамство, про видео я промолчу.
Jeditobe
15.10.2016 15:10-38Стыдно, считать, что имеешь отношение ИТ и не знать английский хотя бы на базовом уровне. Там много терминов, их нет необходимости переводить, иначе сбегутся «знатоки» перевода и заявят, что все переведено не так.
zxcabs
15.10.2016 16:09+33Рискну предположить, что дело не в том что кто-то знает английский, а кто то не знает. Автор комментария сделал замечание о том что качество статьи никакое, по сути вы просто кинули ссылку на видео.
От себя добавлю, что прикрываться фразой: «Стыдно, считать, что имеешь отношение ИТ и не знать английский хотя бы на базовом уровне.», совсем некрасиво, потому что это шаблонный ответ на все вида: «Стыдно, считать, что имеешь отношение к <% чему-либо %> и не <% (знать/уметь) %> <% (что-либо)%> хотя бы на базовом уровне.». Это как последний аргумент: «Сначала добейся».FForth
15.10.2016 17:12+8Такого формата статей не должно быть на данном ресурсе!
т.к. зная английский язык, автор публикации посчитал лишним напечатать краткий перевод
или хотя бы краткий анонс со своим мнением.
P.S. Сервис Google translate более/мение может сделать перевод английского текста.Jeditobe
15.10.2016 23:53+3Краткое изложение добавлено исключительно для удобства и не просто так спрятано под спойлер. Топик находится в хабах с профессиональной продвинутой аудиторией, которая должна быть как минимум знакома с названиями терминов. Таких людей, как правило, расстраивает любая попытка переводов устоявшихся терминов и они лучше их воспринимают в оригинале. В тексте этих терминов значительное количество.
Всех, кого задело отсутствие русского перевода субтитров и содержания видео, приглашаю вместо упражнения в комментариях принять участие в краудсорсинге перевода данного выступления. Процесс идет на ресурсе Нотабеноид. Если у вас нет инвайта, напишите мне в личку.
IvanTamerlan
15.10.2016 20:08+1есть два варианта по «имеешь отношение к <% чему-либо %> и не <% (знать/уметь) %> <% (что-либо)%> хотя бы на базовом уровне».
Вариант 1. Основы профессии. Например — быть математиком и не знать простых арифметических операций, типа умножение, сложение, деление.
Вариант 2. Ложная связь с профессией. Например — IT не подразумевает обязательную связь с английским. Т.к. пройдет время и будут слова «Стыдно, считать, что имеешь отношение к ИТ и не знать китайский/индийский хотя бы на базовом уровне». Да и в самом ИТ слишком много профессий, некоторые динамично развиваются, другие в принципе не требуют современных знаний, достаточно 10-летней давности.IvanTamerlan
15.10.2016 20:19+2Например: преподаватель информатики в музыкальном училище (не путать с муз.школой!), где достаточно базовых знаний, а методички и учебники готовятся на русском языке совершенно другими людьми. Тут даже знания про паскаль/си будут избыточны, т.к. студенты уже сделали выбор своей профессии. Соответственно, такой учитель информатики связан с ИТ, но не обязан знать английский вообще.
И тут он поставил линукс для себя поэкспериментировать по инструкциям из интернета, нашел интересную программу, которая не запускается на Windows. Видит русский заголовок, заходит с надеждой, что если не сегодня, то совсем скоро его любимая программа будет запускаться на Windows, хочет прочитать аннотацию и посмотреть видео. В обоих случаях его ждет облом, т.к. автор поста просто занимался копи-пастой. Единственным выходом — использование автоматизированных средств перевода или знакомых с базовым английским.
Inkstyle
17.10.2016 02:17+2А мне понравилась статья. Не знал об этом докладе и спасибо автору, за новую инфу. В любом случае никто никого не заставляет смотреть и всегда можно почитать другою статью.
IvanTamerlan
15.10.2016 19:50-1Перефразирую:
Стыдно, считать, что все читатели имеют непосредственное отношение к IT, а имеющие поголовно знают английский хотя бы на базовом уровне. Там всего около 286 слов, их требуется переводить, иначе сбегутся знатоки и заявят, что хамство давать текстовый транскрипт не на русском языке, да и еще в виде статьи.
asmrnv777
15.10.2016 23:47+1Ну мне вот легко хватит знаний английского, чтобы прочитать этот текст. Но лень, я хочу на русском.
semmaxim
16.10.2016 13:20+2Одно дело знать английский, чтобы мочь перевести термины и читать MSDN без словаря (я так мог ещё на первых курсах универа) и совсем другое — без усилий на лету понимать связный текст (я так не могу до сих пор).
uSasha
17.10.2016 10:52+1Ну вообще мне понравилась статья, и классно, что она есть хоть в таком виде.
muxa_ru
15.10.2016 14:30+1Лучше расскажите, зачем это чудо нужно?
ZoomLS
15.10.2016 14:42+1Мелкомягкие стараются пересадить на 10 винду, как можно больше народу.
muxa_ru
15.10.2016 15:14Я уже на 10 винде.
У меня есть это WSL
Что я могу с ним делать полезного или весёлого?creker
15.10.2016 16:12+2Писать и тестировать на Windows софт, который будет работать на Linux. Кроссплатформенная разработка намного проще становится как никак.
muxa_ru
15.10.2016 16:23Это да, но вдруг ещё что нибудь есть.
Вот, например, хуиз проверять стало легче :)foxmuldercp
15.10.2016 18:23+1Жм, "довод в копилочку". А если серьезно — у любого хостера на сайте с вероятностью больше 50% есть эта функция, так что она работает даже с мобильного.
Но вообще возить с собой линуксовую виртуалку можно и в фиче Hyper-V которая есть в Win начиная с вин8, у меня таких виртуалок на ноуте бывает до десятка…
но убунту прямо в винде имеет ряд ограничений, вроде работы сокетов только под админскими правами процесса bash
kxl
15.10.2016 20:59+3Думаю, одна из первоочередных целей — запуск Docker без установки виртуальной linux-машины
Laney1
16.10.2016 07:58+1нет, docker в WSL не работает. Для этого в MS запилили отдельную подсистему, windows containers, которая пока есть только в Windows Server (но думаю, в будущем ее включат и на десктопах)
Myrddin
16.10.2016 19:27Windows 10 Pro тоже есть
Laney1
16.10.2016 19:50+1нет. То, что есть в windows 10, MS называет «контейнеры hyper-v» — т. е. на самом деле это никакие не контейнеры, а просто образы виртуалок hyper-v, которыми можно управлять из docker. Настоящие контейнеры (полностью аналогичные линуксовым) MS называет «контейнеры windows server», в windows 10 pro их нет
etz
15.10.2016 14:35+7Н-да, четыре то абзаца можно было и перевести. Или хотя-бы краткую выжимку своими словами.
mezastel
15.10.2016 15:11+2Приход Linux на Windows очень на руку разработчикам С++, т.к. весь сочный стэк (Clang, Cling, итп) теперь можно гонять не отходя от кассы. Также теперь очень хорошо очерчен переход с Docker на «натив»: сначала ты устанавливаешь в Докере поиграться, а если что-то тебе нравится, перебазируешь в Ubuntu 14 которая в Anniversary Preview. А еще это огромный плюс для всех кто уже давно делает «code on windows, run on linux» т.к. теперь можно для начала запускать локально. Понятно что есть ограничения и, на текущий момент, существенные косяки (например, даже запустив bash как административный процесс, все равно приходится использовать sudo), но это Бета версия. Хочется думать что МС (и хватит уже называть их «мелкомягкими»!) поправит к следующему релизу баги и все будет еще лучше.
Alex_ME
15.10.2016 15:29+3Было бы очень хорошо, если бы была более тесная интеграция линукс-подсистемы.
1. Для каждого пользователя Windows существует как бы своя Ubuntu. С одной стороны хорошо — можно грохнуть ее в начальное состояние, если что-то сломал. С другой стороны, хотелось бы, чтобы было соответствие между учетными записями Windows и Ubuntu. Так же было бы удобно, если /home был бы ссылкой на C:\Users\%username%\ (наверное, можно сделать самому)
2. Прозрачный вызов программ. К примеру, в каком-нибудь QtCreator (первое, что в голову) gcc, а не MinGW
Ну и добавление поддержки того, чего сейчас нет (RAW-сокеты и т.д.)creker
15.10.2016 16:11+1Поддержка добавлена будет. Если хотите, можете на github поддержать предложения. Их реализуют и довольно быстро (вон недавно для компиляции Go даже добавили исправления), но проблем в том, что WSL это часть ядра, и они не могут просто выпустить новую версию. Тут и бюрократия, и технические причины, ибо WSL частенько использует то, что будет в ядре только с новой ОС. Поэтому приходится ждать релиза самой ОС.
mezastel
15.10.2016 16:15-1Вроде как Windows 10 это последняя Windows.
creker
15.10.2016 17:07+1Речь, очевидно, о новых билдах. Это слова самого разработчика — они бы рады выпускать внеочередные обновления, потому как они есть и работают, но есть ограничения, в том числе технические, почему так нельзя. Поэтому приходится ждать новых крупных билдов.
daggert
15.10.2016 16:28+2>Так же было бы удобно, если /home был бы ссылкой на C:\Users\%username%\ (наверное, можно сделать самому)
Не надо, ради ЛММ. Меня уже смущает огромное количество файлов ".filename" в этой папке от всяких приложений кроссплатформенных.
AllexIn
15.10.2016 16:09+9Почему хватит называть их мелкомягкими?
mezastel
15.10.2016 16:14-2Ну как-то это презрительно и вульгарно, хоть и является дословным переводом.
Rampages
15.10.2016 16:45+2Ну не сказал бы что вульгарно и презрительно. Просто «неправильно» т.к. под словом «soft» подразумевается совершенно другое значение.
Ваш вариант с МС, тоже не совсем хорош, он очень похож на английские «MC» (Эм-Си), да и мало ли какой русской аббревиатуре может соответствовать, т.е. значение МС нужно улавливать из контекста, что не есть хорошо. Лучше уж просто «Майкрософт» или «Microsoft», ну или хотя бы «Микрософт», на худой конец можно и английскую аббревиатуру «MS» использовать, благо встречается она гораздо чаще (MS Office, MS Windows и т.п.).
Lsh
15.10.2016 16:47Я правильно понимаю, что, используя тулзы от Алекса, можно из Linux окружения запустить Windows приложение, но получить консольный вывод не получится?
Т.е. Внутри Linux окружения я не могу сделать var=$(lxexec dir c:\\)? Т.е. сделать смогу, но результат не получу.
Lsh
15.10.2016 16:50Хм… Если можно организовывать общую память между двумя «мирами», то может быть и Х-сервер с нормальным ускорением сделают…
d_olex
15.10.2016 17:40+2> исследователь компьютерной безопасности Алекс Ионеску, автор бестселлера «Windows Internals»
Алекс, безусловно, отличный чувак, но в случае с указанной книгой он является всего-лишь соавтором ее 4-го издания.Jeditobe
16.10.2016 00:22+6Не бывает «всего лишь соавторов». У этой книги уже 7 изданий, существенно отличающиеся друг от друга. И над разными изданиями не всегда работали одни и те же люди. К слову, первое издание вообще было написано Helen Custer, а не Марком Руссиновичем или Девидом Соломоном (работали над последующими изданиями). Алекс Ионеску принял непосредственное участие в написании пятого, шестого и седьмого изданий, и начиная с шестого, указан как автор, с теми же правами, что остальные указанные авторы.
можете проверить сами.mister_fog
16.10.2016 10:04+1«Автор» в современном русском языке означает, что это или единственный автор, или основной. Так что замечание правильное, Алекс именно соавтор. (А называя его автором, вы вводите читателей в заблуждение.)
Cheater
15.10.2016 23:45+1> implemented a full blown Linux 3.4 kernel
Во-первых, мб всё-таки какое-то самописное POSIX-совместимое ядро, а не ядро Linux? Во-вторых, сразу два выражения звучат довольно бессмысленно: «implemented a kernel» (они с ним что угодно сделали — «integrated», «built in», но не «implemented») и указание конкретного релиза ядра.Cheater
16.10.2016 00:23+2А, понятно, почитал про этот wsl. Никакого ядра они не реализовали, они реализовали интерфейс к ядру Linux, и положили внутрь это самое ядро Linux.
Зачем путать людей, говоря «implemented a Linux kernel»?creker
16.10.2016 00:47+2Вы точно прочитали про этот WSL? WSL это не ядро Linux и никакое ядро внутрь они не клали. WSL это реализация интерфейса между Linux ядром и User-space — т.е. syscall'ы. Куда эти syscall'ы уходят самим приложениями уже пофиг. А уходят они в NT ядро, где что-то реализовано поверх имеющихся компонентов, что-то переписано с нуля, а что-то комбинация этих решений. Поэтому и с лицензиями никаких проблем — там нет ни строчки кода из Linux.
Cheater
16.10.2016 09:08+4Извиняюсь, был неправ, правда тогда указание релиза ядра Linux становится совсем уже бессмыслицей.
Alcor
16.10.2016 00:01А что с лицензией в результате?
Если они засунули к себе внутрь ядро linux, то они, конечно, молодцы, но только оно GPL-ное. И если они действительно засунули ядро linux внутрь и интегрировали с windows, то где теперь я, как законный обладатель их продукта, могу увидеть его полный исходный код ибо теперь windows тоже должен быть под GPL.sumanai
16.10.2016 00:19Думаю, там наполовину готовые компоненты, наполовину эмуляция API, так что выкладывать там нечего, изменений мало, и все они уже выложены.
freethetan
16.10.2016 00:01Это всё конечно очень здорово и замечательно что МS внедрил Linux kernel и теперь %username% может поиграться с тем же bash или ещё что то запустить…
Но как то это не практично на мой взгляд.
Может давайте интегрируем Windows в линукс и все будут ходить на костылях?
Зачем к феррари прикручивать газонокосилку или «интегрировать» в газонокосилку спидометр?
Потом все этикостылиПО поддерживать…
TLT-IX
16.10.2016 00:01+3Похоже, эра Windows-firewall-ов закончилась!
Любая дрянь, попав в систему, плотно там обоснуется
• Documented kernel API did not provide notification for Pico processes or threads
• Invisible from endpoint security products/AV
• WSL processes and libraries (.so) are not loaded as SEC_IMAGE, so no image load notifications
• Invisible from endpoint security products/AV
• Completely bypasses AppLocker rules
• SeLocateProcessImageName returns NULL for Pico processes
• Cannot create firewall rules or get the name in WFP callout driver
VSOP_juDGe
17.10.2016 14:17А ламп-стек поднимется? И где вообще в винде это пощупать?
muxa_ru
17.10.2016 14:27— win10 pro
— получить какой-то там новый большой апдейт до сборки не ниже 14393
— включить «режим разработчика»
— в «Включение или отключение компонентов Windows» появлется куча всего включая «Подсистема Windows для Linux (бета-версия)»
После того как всё встанет, появится программа «Bash на Ubunta на Windows»
dmitry_ch
19.10.2016 18:16Почему бы не перевод видео предлагать делать, а просто кратко, экрана на 2-3, не изложить тезисы доклада?
P.S. И, да, что тут странного, если про Bash в винде писали здесь же https://habrahabr.ru/post/280560/ еще весной, не говоря что и обсуждали, как его заюзать правильно.
olegy
19.10.2016 20:02«Ядро Linux, спрятанное внутри Windows 10»
Хороший заголовок, юристы напряглись ;)
Линус Торнвальдс в ядре 3.4 использовал NT — kernel
Terras
Мелкомягкие поняли, что проиграли битву за мобильники и решили полностью оккупировать десктопы?
Jeditobe
Вообще-то, они давно их купировали.
yarric
Ну как сказать — оккупировали… Вот по данным Stackoverflow Mac OS X и Linux уже практически опережают Windows.
daggert
Вы забыли тег «сарказм» или плашку «на правах шутки» (:
Guderian
Интернет-опрос показал что 100% пользуются интернетом… Приправьте это статистикой с сайта, где пасутся клерки, добавьте щепотку данных с игровых сайтов и получите…
undersky
Вывсёврёти :)
Миллионы пользователей Facebook не подозревают, что сидят в интернете
Пруф:
https://m.geektimes.ru/post/245674/
yarric
В прошлых опросах лидировала винда — не понимаю, откуда столько эмоций.
Nagg
А по данным Steam, доля линукса — 0.9%, макоси — 3.5% и более 95% Windows. Статистика — она такая статистика ;-).
murzilka
Вообще-то если просуммировать проценты разных версий windows, то даже в этом опросе доля винды больше 52-х процентов.
Al_Azif
Скажите, что вы такое забористое принимаете?
Я тоже хочу в фантастические миры ;)