Wednesday 23 January 2019

Виртуальные столы в Windows 10.

Всем привет. 

Оказывается Windows 10 имеет такую фишку как виртуальные экраны.  Работать с ними просто.

Добавить виртуальный экран: Winkey+Ctrl+D
Посмотреть список запущенных экранов: Winkey+Tab
Переключение между экранами: Winkey+Ctrl+стрелка вправо или влево.
Закрыть экран: Winkey+Ctrl+F4.

Проверил, работает. Но прикольно!


Приколы выглядят так - все приложения независимо от того на каком столе (экране) они находятся в перечне запущенных задач сидят вместе. 

Звук, разумеется, для всех столов общий.

Если окна минимизированы то как догадаться на каком они столе сейчас находятся? Тем более Windows крутит на карусели только 9 столов. Остальные просто не видны.

Особенно жестко это выглядит когда  у тебя еще и два монитора. До сих пор не могу догадаться где откроется следующее окно. )

Увидимся.


Thursday 17 January 2019

Системное время в AD.

Всем привет.

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

По сути на контроллере домена следует выполнить следующее.

1. Запускаем командную строку от имени администратора.

2. Останавливаем службу W32Time:
net stop w32time

3. Задаем адреса внешних источников времени:
w32tm /config /syncfromflags:manual /manualpeerlist:"IP-adr-timeserver"

4. Теперь заставим контроллер отвечать клиентам на запросы о синхронизации времени:
w32tm /config /reliable:yes

5. Запускаем службу времени W32Time:
net start w32time

6. Проверяем текущую конфигурацию службы времени:
w32tm /query /configuration


На рабочих станциях и серверах домена проверяем синхронизацию времени так.

Задания часового пояса UTC-2:
tzutil /s "FLE Standard Time"
Проверка текущего пояса:
tzutil /g

Time synchronization, вариант #1:
w32tm /tz

Просмотр источника source:
w32tm /query /source
w32tm /query /peers

Запуск синхронизации:
w32tm /resync
w32tm /resync /rediscover

Мониторинг состония:
w32tm /monitor

Time synchronization, вариант #2:
Source:
net time

Синхронизация:
net time /set

Wednesday 16 January 2019

System Monitor для Windows.

Всем привет.

Изучаем новое не забывая старое. Оказывается повысить информативность и расширить возможности функции штатного аудита событий в Windows-среде можно используя утилиту System Monitor (Sysmon).

Часть 1.

Утилиту Sysmon можно загрузить с веб-сайта Microsoft Docs, из раздела Windows Sysinternals download пакета Windows Sysinternals от Марка Руссиновича.

Для эксперимента берем специальную готовую сборку с GitHub download, включающую файл конфигурации Sysmon Threat Intelligence Configuration от ION-STORM. Она ориентирована именно на выявление инцидентов информационной безопасности и может выступить качественной основой для создания твоих собственных файлов конфигурации.

Утилиту можно установить точечно на каждое рабочее место либо с использованием групповых политик (Group Policy) в домене.

Инсталирование в качестве сервиса:
>sysmon64.exe -i

Применение новой конфигурации:
>sysmon64.exe -с config.xml

Если все ок, то получим ответ:

Loading configuration file with schema version 4.00
Configuration file validated.
Configuration updated.

Тестовый config.xml может быть таким:

<Sysmon schemaversion="4.00">
  <!-- Capture all hashes -->
  <HashAlgorithms>*</HashAlgorithms>

  <EventFiltering>
    <!-- Log all drivers except if the signature -->
    <!-- contains Microsoft or Windows -->
    <DriverLoad onmatch="exclude">
      <Signature condition="contains">microsoft</Signature>
      <Signature condition="contains">windows</Signature>
    </DriverLoad>

    <ProcessTerminate onmatch="include">
    <!-- Log network connection if the destination port equal 443 -->
    <!-- or 80, and process isn't InternetExplorer -->
    </ProcessTerminate>

    <NetworkConnect onmatch="include">
      <DestinationPort>443</DestinationPort>
      <DestinationPort>80</DestinationPort>
      <Image condition="is">C:\Program Files\OpenVPN\bin\openvpn-gui.exe</Image>
      <Image condition="contains">Notepad</Image>
    </NetworkConnect>

    <NetworkConnect onmatch="exclude">
      <Image condition="end with">iexplore.exe</Image>
      <Image condition="end with">chrome.exe</Image>
    </NetworkConnect>

    <FileCreate onmatch="exclude">
      <Image condition="is">C:\Windows\system32\mmc.exe</Image>
      <Image condition="contains">chrome.exe</Image>
    </FileCreate>

    <FileCreateTime onmatch="exclude">
      <Image condition="contains">chrome.exe</Image>
    </FileCreateTime>

  </EventFiltering>
</Sysmon>

Справка по параметрам конфигурации сервиса:
>sysmon64.exe -? config

Проверка текущей конфигурации:
>sysmon64.exe -c

Если все ок, то получим такую сводку:

Current configuration:
 - Service name:                  Sysmon64
 - Driver name:                   SysmonDrv
 - HashingAlgorithms:             SHA1,MD5,SHA256,IMPHASH
 - Network connection:            enabled
 - Image loading:                 disabled
 - CRL checking:                  disabled
 - Process Access:                disabled

Rule configuration (version 0.00):
 - DriverLoad                         onmatch: exclude
Signature                      filter: contains     value: 'microsoft'
Signature                      filter: contains     value: 'windows'
 - ProcessTerminate                   onmatch: include
 - NetworkConnect                     onmatch: include
DestinationPort                filter: is           value: '443'
DestinationPort                filter: is           value: '80'
Image                          filter: is           value: 'C:\Program Files\OpenVPN\bin\openvpn-gui.exe'
Image                          filter: contains     value: 'Notepad'
 - NetworkConnect                     onmatch: exclude
Image                          filter: end with     value: 'iexplore.exe'
Image                          filter: end with     value: 'chrome.exe'
 - FileCreate                         onmatch: exclude
Image                          filter: is           value: 'C:\Windows\system32\mmc.exe'
Image                          filter: contains     value: 'chrome.exe'
 - FileCreateTime                     onmatch: exclude
Image                          filter: contains     value: 'chrome.exe'


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

Sunday 13 January 2019

Обратная сторона от Youtube.

Всем привет.

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

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

Теперь же я могу ставить в ролики то аудио что мне подходит, а не Youtube. Разумеется делать это надо без фанатизма. Но обязательно в описание ролика добавлять текст типа - 
Disclaimer - I am not the owner neither the music nor the images. 
They belong to their original owners. This video is not commercial.

Успехов.

Friday 11 January 2019

Рецепт - как нарисовать картину.

Всем привет.

Мне нравятся книги которые ко мне попадают случайно. Сегодня я имею ввиду роман «Остров Дума» Стивена Кинга. Я читал многие его книги, но эта мне пришлась по душе больше других. Так получилось что я время от времени отвлекаюсь на творчество, это помогает постичь новые горизонты. Причем здесь  «Остров Дума»? По тексту Стивен подает необычный рецепт тем кто хочет зарисовать этот мир, и не только этот. Очень сильно. И очень точно. Ниже я привожу его рецепт в переводе, книга у меня была украинском языке. Кто не знаком с замечательным украинским языком милости прошу к оригиналу.

Як намалювати картину.

Почніть з незайманої площини. Це не конче мусить бути папір або полотно, але, гадаю, площина має бути білою. Ми називаємо її білою, бо потребуємо якогось слова, проте справжнє її ім’я — ніщо. Чорне — це відсутність світла, а біле — відсутність пам’яті, колір неспроможності пам’ятати.

Почніть з того, що знаєте та бачите, а потім все переосмисліть. Мистецтво — магія, це беззаперечно, але всяке мистецтво, хоч яке чудернацьке, бере початок з нехитрої повсякденності. То ж не варто дивуватися, якщо на звичайному грунті раптом виростають фантастичні квіти. 

Не бійтеся експериментувати, знайдіть свою музу, дозвольте їй скеровувати вас. Але постійно концентруйтеся на результаті. Є різниця між гарною картиною і черговим банальним зображенням, що просто захаращує собою світовий простір.

Пам’ятайте, що правда в деталях. Неважливо, яким ви бачите світ сьогодні чи що за стиль він нав’язує вашій творчості, бо вся правда в деталях. Звісно, диявол також у деталях — це всім відомо, — але ймовірно, що правда та диявол — це різні слова, які просто означають те саме. 

Не втрачайте хоробрості. Не бійтесь вимальовувати потайні моменти з буденного. Хто каже, що мистецтво це завжди зефір? Іноді воно - ураган. Проте і в такому випадку вам не варто вагатися чи змінювати курс. Бо якщо ви переконуватимете себе в найбільшій неправді кепського мистецтва - ніби ви тут хазяїн - ви втратите шанс висловити правду. Правда не завжди гарна. Іноді правда - одоробло.

Tuesday 8 January 2019

Калькулятор Hash суммы.

Всем привет.

Часто надо проверить hash-сумму подозрительного файла. После недолгих поисков в сети я нашел калькулятор с открытым кодом от Грега Захарова. Весьма изящное решение. 

Все что ниже запихните в bat-файл. И будет вам счастье. В виде простенького калькулятора hash-суммы для любого файла. Не забудьте тег html взять в <>.

@mshta "%~f0"&exit /b

html
  <head>
    <title>Hash Calculator</title>
    <meta name="author" content="Greg Zakharov" />
    <hta:application id="iHasher"
         applicationname="Hash Calculator"
         border="thin"
         contextmenu="no"
         maximizebutton="no"
         minimizebutton="no"
         scroll="no"
         singleinstance="yes"
         sysmenu="yes"
         version="1.0" />
    <style type="text/css">
      html, body {
        background: #eee;
        font-size: 90%;
        margin: 3px 3px;
        padding: 0;
      }
      p {
        font-weight: bold;
        margin: 1px 1px;
        padding: 0;
      }
      #filename {
        width: 100%;
      }
    </style>
    <script language="VBScript">
      Sub Resize()
        window.resizeTo 430, 130
      End Sub
   
      Sub GetHash()
        Dim objFile, objSize, objBuff, objType, objHash, objDone
        Dim objNS
     
        document.getElementById("result").value = ""
     
        objFile = document.getElementById("filename").value
        If objFile = "" Then
          alert("Nothing choosed.")
          Exit Sub
        End If
     
        With CreateObject("Scripting.FileSystemObject")
          objSize = .GetFile(objFile).Size
        End With
     
        If objSize = 0 Then
          alert("Specified file has null length.")
          Exit Sub
        End If
     
        With CreateObject("SAPI.SpFileStream")
          .Open objFile, 0
          .Read objBuff, objSize
          .Close
        End With
     
        For Each h In hash
          If h.checked Then
            objType = LCase(h.value)
            Exit For
          End If
        Next
     
        objNS = "System.Security.Cryptography."
        Select Case objType
          Case "md5"       Set objHash = CreateObject(objNS & "MD5CryptoServiceProvider")
          Case "sha1"      Set objHash = CreateObject(objNS & "SHA1Managed")
          Case "sha256"    Set objHash = CreateObject(objNS & "SHA256Managed")
          Case "sha384"    Set objHash = CreateObject(objNS & "SHA384Managed")
          Case "sha512"    Set objHash = CreateObject(objNS & "SHA512Managed")
          Case "ripemd160" Set objHash = CreateObject(objNS & "RIPEMD160Managed")
        End Select
     
        objType = objHash.ComputeHash_2((objBuff))
        For i = 1 To LenB(objType)
          objDone = objDone & Right("0" & Hex(AscB(MidB(objType, i, 1))), 2)
        Next
     
        document.getElementById("result").value = LCase(objDone)
      End Sub
    </script>
  </head>
  <body onload="Resize()">
    <p><input type="file" id="filename" onchange="GetHash()" /></p>
    <p>
      <input type="radio" name="hash" value="MD5"       onclick="GetHash()" />MD5
      <input type="radio" name="hash" value="SHA1"      onclick="GetHash()" />SHA1
      <input type="radio" name="hash" value="SHA256"    checked="true" onclick="GetHash()" />SHA256
      <input type="radio" name="hash" value="SHA384"    onclick="GetHash()" />SHA384
      <input type="radio" name="hash" value="SHA512"    onclick="GetHash()" />SHA512
      <input type="radio" name="hash" value="RIPEMD160" onclick="GetHash()" />RIPEMD160
    </p>
    <textarea cols="49" id="result"></textarea>
  </body>
/html

На сегодня все.

Sunday 6 January 2019

У каждого свои игрушки.

Всем привет.

Господь наказывает нас за то, 
чего мы не способны представить…
Стивен Кинг, «Остров Дума»

По рекомендации одного журнала мне попал в руки роман молодого украинского писателя Максима Кидрука "Бот".

Сегодня Максим Кидрук стал первым украинским писателем, который специализируется на модном жанре технотриллера. В 2012-м году он презентовал «Бот» как первый украинский литературный технотриллер. 

С первых страниц просматривается идейная аналогия с российским фильмом "На игре" (2009).  У каждого свои игрушки. Можно также провести аналогию с романом Дена Брауна "Цифровая крепость" и Майкла Крайтона "Парк юрского периода". Хотя, по моему, у Крайтона более сильным является роман "Сфера". А в тему своего романа сам автор ссылается на крайтоновский "Рой".

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

Роман перегружен технически-научными подробностями, но спасибо автору, везде есть ссылки и сноски. Так что для читателя с не техническим складом ума текст подготовлен. Даже отрывок злополучного кода приведен. Максим, это было сильно, прям как у Дена Брауна.)

Насколько правдоподобны образы героев? Читатель этого не узнает. Наверняка автор писал что-то с себя, возможно даже главного героя Тимура. Не столь суть важно. Почти с самого начала романа звучит главный призыв - призыв к ответственности за свои действия, за свой код. Если это возможно. Или иначе: код сдан, проект закрыт, disclaimer указан.

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

Читать или нет? Читать однозначно стоит. Жанр технотриллера раскрыт сполна. Но в целом 16+. Мне понравился. Книга имеет официальный перевод на русский и польский языки.

Следующим на чтение будет его «Твердыня» - второй триллер и восьмая художественная книга украинского писателя и путешественника. Роман также написан в жанре психотриллер (приключенческий) триллер. Одного из главных героев автор списал из себя. Ну разумеется, Максим).

Приятного всем чтения.

Saturday 5 January 2019

Что такое пароль компьютера в AD.

Всем привет.

Наверняка админы AD в курсе что кроме пароля пользователя существует еще и пароль компьютера.

В доменной среде, все доменные компьютеры так или иначе взаимодействуют с контроллерами домена (далее — КД). Если рассмотреть процесс взаимодействия подробнее, то можно сказать, что каждый компьютер для взаимодействия с КД устанавливает безопасный канал коммуникации (secure channel, далее — schannel). Упрощая, этот канал представляет собой сессию между КД и компьютером. Чтобы эта сессия была безопасной, она шифруется, при помощи ключа, известного только КД и самому компьютеру. В качестве этого ключа выступает пароль учетной записи компьютера в домене (не путать с паролями доменных пользователей).

При попытке обмена данными с КД, КД в первую очередь проверяет, совпадает ли пароль, который предоставляет компьютер для установки schannel, с тем, который хранится в базе Active Directory. Если пароль совпадает - канал устанавливается и происходит дальнейшая коммуникация между компьютером и КД (например логин пользователя). В случае же, если пароли не совпадают, возникает наша злополучная ошибка: "The trust relationship between this workstation and the primary domain failed".

Friday 4 January 2019

Времена.

Тот самый персонаж. После премьеры. Совсем коротко.

- А это опять я. Ну не могла же я пропустить премьеру клипа. Мое уважение мастеру - это было сильно! В зачет ему однозначно.

- Случается... Но раз тебя занесло сюда, то мне нужен совет.

- Совет? От меня? Вау, я в тебе не ошиблась. Так ты не только интересный, но еще и забавный... Спрашивай.

- Почти готова идея портрета от руки. Но меня берут сомнения что он будет лучше оригинала. Муза его оценит?

- Что тебе сказать, ты уже столько создал, что для тебя это будет скорее повторением пройденного. Сможешь ли ты удивить этим свою музу? Не знаю. Я с ней не общаюсь, у нее свой покровитель. Насколько я помню ранее ты рисовал с одной фотографии, а сегодня у тебя их сотня. А тебе их все подбрасывают и подбрасывают...)

- Да, вот пытаюсь в них разобраться.

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

- Минутку, это же не твое...

- Не мое. Но там где бездна там и я. Не забывай. Ладно человек, мне некогда. Сегодня я занята.

- Эй, так каким будет твой ответ?

- У вас не было прошлого, точно не будет будущего. Перед тем как начинать писать портрет пусть мастер спросит себя - если у вас настоящее? Это и будет мой ответ. Я не прощаюсь.










Wednesday 2 January 2019

Восстановление доверительных отношений в домене.

Всем привет.

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

Как это лечится?

Самый простой способ это вывести хост из домена и тут же ввести его обратно. Но ходить к хосту ножками не всегда возможно. Поэтому пробуем это сделать через Powershell.

Мне известно два варианта. Пусть "AdminDC" это наш администратор домена, а "admin" это наш локальный администратор на подопытном хосте. Все операции проводим с хоста администратора домена.

$user = "FORZA\AdminDC"
$pass = ConvertTo-SecureString -String 'MyPasssword' -Force  -AsPlainText
$cred = New-Object System.Management.Automation.PSCredential($user,$pass)

$Hostname = Read-Host "Please enter the computers hostname that you wish to remove and re-add to the domain"

$DomainName = Read-Host "Please enter the Domain name"

# Вариант №1
Используем два известных командлета Remove-Computer и Add-Computer.

# выводим компьютер из домена в группу WKS
Remove-Computer -ComputerName $Hostname -WorkgroupName "WKS" -UnjoinDomaincredential $user -PassThru -Verbose -Restart

# возможно хост надо перегрузить принудительно
Restart-Computer -ComputerName $Hostname -Wait

# а теперь заводим компьютер в домен
Add-Computer -ComputerName $Hostname -LocalCredential "$Hostname\admin" -Credential $cred -DomainName $DomainName -Force -Verbose -Restart

Замечу что при выводе из домена вам может помешать правила Firewall-а подопытного хоста,
а при вводе в домен отсутствие прав на выполнение удаленных WMI-запросов.


Tuesday 1 January 2019

Проблема с материалами формата "Покрытие".

Всем привет.

Вот получил на днях такое сообщение от Google-a "На сайте http://nyukers.blogspot.com/ выявлена новая проблема с материалами формата "Покрытие".

Мы выявили на Вашем сайте новые проблемы (количество: 1), связанные с материалами формата "Покрытие", с помощью инструментов Search Console. Это означает, что контент в формате "Покрытие" может быть некорректно представлен в результатах Google Поиска. Рекомендуем выполнить проверку Вашего сайта и устранить выявленную ошибку. 

И собственно сама проблема озвучена так:
Ниже приведены некоторые из обнаруженных неполадок. 
Проиндексировано, несмотря на блокировку в файле robots.txt 

Google пытался, но не смог. Или смог, но с ограничениями. Зачем я гадаю? Да потому что блокировку в файле robots.txt я не ставил. Это я к тому что проблема может быть совершенно в другом. В моем случае она оказалась на поверхности. Из-за последнего поста шаблон блога глюканул и вместо пяти сообщений на первой странице показал только одно. Как только я его убрал все вернулось на свои места.

Позже Google  прислал еще одно "На сайте http://nyukers.blogspot.com/ выявлена новая проблема с материалами формата "Удобство для мобильных"

Мы выявили на Вашем сайте новые проблемы (количество: 4), связанные с материалами формата "Удобство для мобильных", с помощью инструментов Search Console. Это означает, что контент в формате "Удобство для мобильных" может быть некорректно представлен в результатах Google Поиска. Рекомендуем выполнить проверку Вашего сайта и устранить выявленные ошибки. 

Просмотрите примеры выявленных проблем (всего 4) перечисленные в соответствии с количеством страниц, на которых они найдены: 
  • Используются несовместимые плагины 
  • Интерактивные элементы расположены слишком близко 
  • Слишком мелкий шрифт 
  • В метатеге viewport должно быть значение device-width.

Как видите тут уже явные указания где что править. Удивление вызывает только последнее замечание - у меня шаблон блога штатный, из библиотеки того же Google. Возможно он настолько старый что не знает про адаптивный дизайн? Знает. Более того метатег viewport там есть:

meta content='width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0' name='viewport'.

Есть повод для размышлений.


Версия на печать

Популярное