Pokazywanie postów oznaczonych etykietą security. Pokaż wszystkie posty
Pokazywanie postów oznaczonych etykietą security. Pokaż wszystkie posty

sobota, 18 kwietnia 2015

Jesteśmy producentami danych

Wcześniej pisałem o danych zbieranych przez firmy telekomunikacyjne oraz dyrektywie z 2006 roku, a tym razem filmik dokumentalny o światowych firmach, które zbierają dane.



Co ciekawe ten filmik był wcześniej pod innym linkiem - może youtube (czyli google) zablokowało ten filmik :)


O danych zbieranych przez firmy zaczęło się głośniej mówić, gdy Edward Snowden opublikował informację o 'tajemniczej umowie' między wielkimi korporacjami o rządem USA.

Poniżej filmik przedstawiający problem w przyjemny sposób i "dick-pics program":


Wydaje mi się, o bezpieczeństwie powinno się mówić w kontekście "dick-pics program". Czy rząd i NSA mogą go widzieć i komu będą to udostępniać.

A tutaj jeden z pierwszych wywiadów z Snowdenem:

Jestem po COMPTIA Security+


Zdałem egzamin z bezpieczeństwa. Szczerze powiedziawszy myślałem, że będzie łatwiejszy, między innymi nie wiedziałem o tym, że jest symulacja konfiguracji kerberosa do autoryzacji przez WiFi czy projektowanie bezpiecznej sieci w firmie.






Poniżej zamieszczam ściągawkę. Na pierwszej są najważniejsze terminy używane w bezpieczeństwie, a na drugiej jest lista portów (tak, nr portów są wymagane na egzaminie).










Również posiadam certyfikat z bezpieczeństwa z Microsoft. Co prawda jest to jeden z podstawowych egzaminów (seria egzaminów MTA), ale bardzo sobie go cenię, gdyż pozwolił mi uporządkować wiedzę z bezpieczeństwa. Z tego co pamiętam to nie była wymagana symulacja, tak jak przy CompTIA Sec+.


środa, 1 października 2014

Certyfikat z LabView

Zdałem egzamin na certyfikat LabVIEW Associate Developer. Pomyślałem sobie, że pochwale się :) Ale nie to jest intrygujące. Problem w tym, że jest lista osób z certyfikatem CLAD, gdzie publicznie zamieszczony jest numer telefonu do tych osób.

Co ciekawe, w Polsce jest 980 osób z certyfikatem CLAD z czego ponad połowa (ponad 495) osób z Polski jest z obszaru krakowskiego.

wtorek, 12 sierpnia 2014

Monitorowanie telefonów w UE

Obejrzałem filmik na TEDx o monitorowaniu rozmów telefonicznych. Słyszałem o śledzeniu przez NASA, ale nie byłem świadomy, że rejestrowane są rozmowy telefoniczne oraz przetwarzana jest lokalizacja rozmówcy w EU. Ten cały monitoring jest dzięki dyrektywie 2006/24/WE, która zobowiązała wszystkie państwa członkowskie UE do uchwalenia przepisów nakazującym operatorom telekomunikacyjnym do przechowywania i udostępniania organom ścigania danych swoich klientów. Co ciekawe, wg. Europejskiego Trybunału Sprawiedliwości ta dyrektywa jest niezgodna z konstytucją niektórych krajów oraz narusza prawo do prywatności.





Więcej o tym można poczytać tutaj lub tutaj lub tutaj.
Czy ktoś wie, gdzie można znaleźć dane, jacy europosłowie głosowali za tą dyrektywą??

niedziela, 13 kwietnia 2014

DNS z cache

Przdstawiam Ci skrypt do pobierania pamięci podręcznej programu rozpoznawania nazw DNS. Dlaczego jest to ważne - spójrz na wpis niebezpiecznika :)

Poniżej jest skrypt, który zwraca Ci wszytkie zapisane w buforze nazwy DNS:
function Get-IPConfigDNS
{
Write-Host "Getting DNS cache info"
$recordNames = ipconfig /displaydns | select-string "Record " #white space on end
    for ($i=0;$i -lt $recordNames.count;$i+=3) 
    {

        $hash= [ordered]@{
          Name=$recordNames[$i].toString().Split(":")[1].Trim()
          Type=($recordNames[$i+1].toString().Split(":")[1].Trim()) -as [int]
          Value=$recordNames[$i+2].toString().Split(":")[1].Trim()
        }
        New-Object -TypeName PSobject -Property $hash
    }
}
Aby uzyskać wszystkie nazwy po prostu wykonaj:
Get-IPConfigDNS | sort name
I pamiętaj, zawsze czyść bufor programu rozpoznawania nazw DNS:
ipconfig /flushdns 

poniedziałek, 24 marca 2014

Pobieranie machine.config z poziomu PS

Machine.config jest bardzo ważnym plikiem. Takie pliki konfiguracyjne jak app.config czy web.config 'dziedziczą' po machine.config. Aplikacja .NET odczytuje ustawienia jakie znajdują się w machine.config, a później z innych plików konfiguracyjnych. Informacje z machine.config są dostępne dla wszystkich aplikacji na komputerze i dlatego mogą zawierać takie informację jak connection string czy informacje o serwerez SMTP.

Jak wiemy PS też jest aplikacją, która korzysta z machine.config. Poniżej zamieściłem skrypt do odczytu informacji z tego pliku:
function Get-MachineConfig
{
    param(
    [switch] $location,
    [switch] $content,
    [switch] $xml,
    [switch] $connectionStrings)

    $retLocation = [System.Runtime.InteropServices.RuntimeEnvironment]::SystemConfigurationFile
    if($location)
    {
        $retLocation 
    }

    $retContent = gc $retLocation
    if($content)
    {
       $retContent 
    }

    $retXml = [xml]$retContent 
    if($xml)
    {
         $retXml
    }

    if($connectionStrings)
    {
       $retXml.configuration.connectionStrings.add
    }
}


Na uwagę zasługuje parametr, który zwraca ścieżkę do używanego pliku konfiguracyjnego:
Get-MachineConfig -location

Oraz parametr do pobierania informacji o dostępnych połączeniach do baz danych:
Get-MachineConfig -connectionStrings

sobota, 15 marca 2014

WhoAmI - pierwsze polecenie na nowym komputerze

Jednym z pierwszych poleceń PowerShell wywołanych na Twoim nowym komputerze powinno być polecenie WhoAmI:
PS>WhoAmI 
<computer_name>\<user_name>
Można uzyskać listę wszystkich grup do których należysz (do tego możesz wyeksportować do csv'ki):
WhoAmI /GROUPS /FO CSV /NH
Oraz możesz uzyskać dodatkową listę uprawnień:
PS>WhoAmI /PRIV

PRIVILEGES INFORMATION
----------------------

Privilege Name                Description                           State   
============================= ===================================== ========
SeShutdownPrivilege           Zamknij system                        Disabled
SeChangeNotifyPrivilege       Obejd« sprawdzanie przy przechodzeniu Enabled 
SeUndockPrivilege             Usuä komputer ze stacji dokujĄcej     Disabled
SeIncreaseWorkingSetPrivilege Zwi©ksz zestaw roboczy procesu        Disabled
SeTimeZonePrivilege           Zmieä stref© czasowĄ                  Disabled

Wszystko w porządku pod warunkiem, że posiadasz system nowszy niż Windows XP. Jeżeli jednak nie posiadasz takiego systemu to będziesz musiał sam napisać taki program/skrypt. Na przykład w PowerShellu będzie wyglądał tak:
function WhoAmIPS
{
 [System.Security.Principal.WindowsIdentity]::GetCurrent().Name
}

Aby uzyskać listę wszystkich grup do których należysz to powinieneś wywołać poniższą funkcję:
function WhatGroupAmIIn
{
    $user = [System.Security.Principal.WindowsIdentity]::GetCurrent()
    $nt = "System.Security.Principal.NTAccount" -as [type]
    $user.Groups | 
    ForEach-Object { $_.translate($NT)}
}

sobota, 22 lutego 2014

MSCW jako proces normalizacji

Procesem normalizacji nazywa się proces, który przekształca dane źródłowe w ustandaryzowany format, nazwy oraz wartości bazując na pewnych regułach. Dane wyjściowe uzyskujemy z danych wejściowych oraz wykonanych regułach na tych danych. W tym przypadku będzie to normalizacja MSCW:



Reguły MSCW są regułami, które zapewniają istotne informacje (lub ich brak) w danych wyjściowych. Zapewne, nie świadomie korzystasz z tych reguł, gdyż są bardzo popularne, ale bardzo rzadko nazywa się je. Są bardzo ważne w bezpieczeństwie przesyłanych danych.

Znaczenie skrótu MSCW wyjaśnia wszystko:
Must - pole musi być w danych wejściowych oraz musi być sprawdzone i zwalidowane
Should - pole musi być w danych wejściowych, a jak nie ma wartości to zostanie zastąpione przez inną (być może domyślną) wartością
Could - jeżeli pole będzie w danych wejściowych, to te pole będzie procesowanie dalej
Won't - jeżeli pole będzie w danych wejściowych, to te pole będzie zablokowane

Przykładem normalizacji MSCW jest proces rejestracji użytkownika na stronie internetowej. Po rejestracji, dostępne informację dla innych użytkowników strony są ograniczone do podstawowych pól:


Normalizacja MSCW występuje również w dużych projektach ETL. Zawsze powinniśmy wiedzieć jakie dane powinny być procesowane, a jakie powinny być ukryte.

niedziela, 2 lutego 2014

Skrypt w parametrach domyślnych w PS

Jak piszę kod w C# i mam metodę z możliwością ustawienia domyślnych parametrów to staram się użyć domyślnych parametrów (jednak, nie polecam robienia czegoś takiego dla interfejsów). Czasami problem pojawia się, kiedy do parametru chciałbym przypisać wartość z innej metody. Składnia języka C# na to nie pozwala:


Domyślne parametry mają pewne ograniczenia m.in.:
- nie mogą posiadać modyfikatora ref, out, czy params
- muszą być stałymi w czasie kompilacji
- nie mogą być metodami, właściwościami ani wyrażeniem
- domyślne parametry muszą być definiowane po wymaganych parametrach w metodzie

Co mi się bardzo podoba w PowerShellu to możliwość wywoływania polecenia razem z domyślnymi wartości ( mogą to być bloki skryptów).
PS jest dużo bardziej elastyczny językiem programowania i możemy wprowadzić wymóg wprowadzenia parametru user oraz podania hasła, które na ekranie będzie 'ukryte' :)
function Do-SomeThing
{
    param(
    [string] $computerName = $env:computerName,
    [string] $user =  $(throw "Argument user is not set"),
    [string] $passwd =  $(Get-Password)
    )
    Write-Host "user:$user passwd:$passwd on computer:$computerName"
} 

Przy wywołaniu prostego polecenia dostajemy błąd:
PS>Do-SomeThing 
Argument user is not set

Kiedy wywołamy polecenie z użytkownikiem to dostajemy okienko z możliwością wpisania hasła


Możesz wywołać funkcję z hasłem i nazwą komputera:
Do-SomeThing -user "Arek" -passwd "Abc" -computerName "MyPc"

No i jeszcze funkcja do pobierania hasła:
function Get-Password
{
    $securePass = Read-Host "Enter Password" -AsSecureString
    $bstr = [System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($securePass)
    $pass = [System.Runtime.InteropServices.Marshal]::PtrToStringAuto($bstr)
    [System.Runtime.InteropServices.Marshal]::ZeroFreeBSTR($bstr)
    return $pass
}
Oczywiście w niektórych przypadkach można użyć Parameter(Mandatory) oraz walidatorów (ValidateScript), ale chciałem Ci przedstawić co można zrobić z domyślnymi parametrami.

sobota, 23 listopada 2013

Data Marty - uszczuplona hurtownia danych

Wcześniej pisałem o procesie ETL i w nim wspominałem o Data Martach jako zbiorze załadowanych danych. Data Marty są nazywane tematycznymi hurtownie danych. Są tworzone w celu zapewnienia wsparcia procesu podejmowania decyzji osobom odpowiedzialnym za konkretny obszar biznesowy. W przypadkach, gdy tylko część danych jest poddawana analizie, warto rozważyć użycie data martów. Data Mart jest generowany na bazie hurtowni danych i zawiera zagregowane dane zorientowane na jeden wybrany temat, które są często wyświetlane oraz łatwo i szybko dostępne dla użytkowników.

Hurtownia danych operuje na poziomie wszystkich dostępnych danych, przy czym tematyczna hurtownia danych jest używana z reguły przez jeden obszar danych w niej zawartych dotyczących jednego konkretnego tematu biznesowego. Dla banków może to być obszar produktów kredytowych lub obszar transakcji kontraktów krótkoterminowych

Typową i najczęściej spotykaną architektura w korporacjach jest jedna globalna hurtowna danych i bezpośrednio zależne i czerpiących z niej dane Data Marty.



Powyżej przedstawiony jest sposób działania Data Martów. Dostęp do nich mają tylko wyznaczone osoby (lub grupy ludzi). Dział raportujący ma dostęp tylko do danych potrzebnych do tworzenia i przeglądania raportów. Dział analiz ma dostęp do Data Martów do analizy oraz raportów. Natomiast grupa administracyjna ma dostęp do wszystkich obszarów danych, gdyż zarządzają tymi danymi.

Kluczowym problemem jest utrzymanie spójności z hurtownią danych. Najważniejsze te kwestie to definicja danych, sposób aktualizacji oraz zarządzanie danymi. Sposobem na ominięcie części problemów jest tworzenie data martu niezależnego od hurtowni danych. Zdarza się to najczęściej, gdy do utworzenia data martu wymagane jest dodatkowe źródło danych spoza hurtowni. Wtedy tematyczne hurtownie danych są zasilane i zarządzane przez procesy ETL (Extract-Translate-Load). Należy jednak pamiętać o tym, że tego typu architektura jest narażone na ryzyko niespójności w rozumowaniu danych.

Najczęstsze powody tworzenia data martów to:
- większa denormalizacja
- dane z zagregowanymi danymi
- dane ze specyficznego okresu czasowego istnienia tych danych ( np. wartość akcji z poprzedniego roku)
- dane dostępne tylko dla specyficznej grupy (dane tylko dla analityków, testerów lub administratorów)

wtorek, 12 listopada 2013

Dzwonienie do klientów banków

Jak wiadomo (albo nie) socjotechniki są bardzo ważne i nie doceniane. Natrafiłem na filmik przedstawiający jak pewien holender wyciągnął ponad 100 tyś euro dzwoniąc do klientów banków i prosząc od nich ich dane.