27 maja 2020

Windows 10 - aktualizacja offline

Microsoft nie chwali się na swoich stronach, że jest możliwość aktualizacji poprawek systemów Windows 10 odseparowanych od sieci Internet. Firma zaleca korzystanie z mechanizmu wbudowanego w system lub WSUS'a. Microsoft udostępnia na swoich stronach  wszystkie poprawki do produktów w postaci plików, które można wyszukiwać korzystając z zapytań wyszukiwarki.

Przykład zapytania dla krytycznych poprawek w systemie Windows 10 w wersji 1909 wygląda tak:


Wynik wyszukiwania warto posortować według daty ostatniej aktualizacji.

Innym rozwiązaniem aktualizacji systemu pracującego offline jest skorzystanie z serwisu www.wsusoffline.net

22 kwietnia 2020

PowerShell & JSON - pobieranie zagnieżdżonych danych

Na przykładzie danych JSON z Narodowego Banku Polskiego oraz giełdy BitBay przedstawiam przykłady zapytań w skryptach PowerShell.
Dane z giełdy BitBay nie posiadające wewnętrznych struktur np: wartość średnia BTCPLN
       
przykład prostych danych JSON pobranych z BitBay:
{"max":29900,"min":28745,"last":29900,"bid":29899.01,"ask":29900,"vwap":29900,"average":29900,"volume":2537.49419038}

przykładowe rozwiązanie - pobieramy cenę "average":
<# adres API z BitBay #>
   $request_BTC = 'https://bitbay.net/API/Public/BTCPLN/ticker.json'
<# zapytanie #>
   $BTC_object = Invoke-WebRequest $request_BTC | ConvertFrom-Json | Select average
<# wynik typu float w zmiennej $BTC_average #>
   [float]$BTC_average = $BTC_object.average
       
 
Dane z NBP posiadają zagnieżdżone struktury, a ich zawartość można pobrać przy pomocy przykładowego zapytania (aktualna cena skupu dolara amerykańskiego w NBP)

19 grudnia 2019

PowerShell & JSON - błąd wywołania Invoke-WebRequest

Jeśli zdarza się Wam parsować dane formatu JSON, przy pomocy skryptów PowerShell, zapewne spotkaliście się z komunikatem:
"Invoke-WebRequest : The response content cannot be parsed because the Internet Explorer engine is not available, or Internet Explorer's first-launch configuration is not complete. Specify the UseBasicParsing parameter and try again."
Istnieje proste rozwiązanie problemu przy pomocy konsoli MMC i przystawki "Zasady komputer lokalny".

29 listopada 2018

SSN - Perceptron w asm x64 - część II - rozpoznawanie kształtów

W drugiej części cyklu zbuduję bardzo prostą sieć neuronową, której celem jest odnalezienie określonego kształtu w obrazie. Sieci neuronowe, oparte na perceptronach, dobrze sprawdzają się w zadaniach, gdzie wynik może być podany w przybliżeniu. Jeśli w obrazie poszukujemy określonego kształtu, sieć perceptronów powinna go odnaleźć i wskazać z akceptowalną dokładnością. W przykładzie posłużę się kwadratem podzielonym na 9 komórek (3x3), w którym każda z nich może przyjąć barwę szarą lub białą. Zadaniem sieci będzie odnalezienie szarego kwadratu o rozmiarze 2x2 komórki. Posługujemy się dwoma barwami oraz 9 komórkami, dlatego ilość wszystkich możliwości to 2^9 czyli 512. Jak widać na poniższym obrazku, kwadrat 2x2 może powstać w 4 wariantach. Sprawdzę na ile można zbliżyć się do tej liczby, wykorzystując tylko 4 neurony.

23 listopada 2018

SSN - Perceptron w asm x64 - część I - bramki logiczne AND i OR

W krótkim cyklu zaprezentuję przykłady prostych sieci neuronowych, zaimplementowanych w asemblerze. Wybrałem architekturę x64 ze względu na ilość dostępnych rejestrów oraz ich rozmiar. W pierwszej części, przedstawię kod prostego perceptronu, którego zadaniem będzie symulowanie bramek logicznych AND, OR, bez użycia w programie instrukcji and, or.
Opisywany perceptron nie posiada trwałej pamięci i składa się z dwóch niezależnych od siebie neuronów, z których każdy symuluje jedną bramkę. Bramki posiadają po dwa wejścia (A i B) i na każde z nich, można wprowadzić po jednej dowolnej wartości, ze zbioru liczb całkowitych {0,1}. Korzystając z wariacji z powtórzeniami, otrzymujemy 4 różne warunki wejściowe.

08 września 2016

Brutal forensic - jak zrobić więcej i nie kompromitować dowodów w sprawie

Jednym z elementów procesu zabezpieczania cyber dowodów w sprawach, w których zachodzi podejrzenie przestępstwa, jest wyliczanie sum kontrolnych z nośników elektronicznej informacji. Jednokierunkowe funkcje skrótu (MD5, SHA lub inne) gwarantują, że dowód jest częścią prowadzonej sprawy i nie został zmodyfikowany w procesie sądowym. Jeśli w sprawie zostały zabezpieczone wyłącznie kopie binarne nośników, badający pracuje wyłącznie na kopi takiej kopi ;-)

Dane z dysków, na których zainstalowany był system operacyjny, w praktyce można wydobyć na dwa sposoby. Pierwszy to tradycyjne podejście z narzędziami typu X-Ways, IEF Magnet, FTK i duża grupa darmowego oprogramowania. Zasada działania tych programów jest podobna do silników antywirusowych, czyli zwykłe poszukiwanie sygnatur i nagłówków znanych typów. Są to bardzo przydatne narzędzia, ale działają na zasadzie kombajnu - orzą równo, bezmyślnie i pozostawiają sporo pytań. Ich zaletą jest to, że wykonują 90% pracy, a wadą cena licencji. IEF odnajduje internetowe tożsamości pośród terabajtów danych, eksportuje pliki eml, wiadomości komunikatorów i kilka innych przydatnych informacji. Takie programy idą na "pierwszy ogień" i często na tym biegły kończy pracę.
Co zrobić jeśli odnajdziemy tożsamość wśród danych i żadnych dowodów w postaci korespondencji ?

07 grudnia 2015

Skomplikowane struktury danych i biblioteki DLL

Podczas pisania biblioteki DLL napotkałem problem. Potrzebowałem połączyć kilka wątków jednego procesu z biblioteką DLL. Chodziło o sytuację, w której jeden proces platformy MetaTrader 4, podczas uruchamiania jednego skryptu na wielu wykresach tworzył wątki, które wywoływały bibliotekę DLL. Wątki, które miały niezależnie wykorzystywać pamięć biblioteki w ramach jednego procesu nadpisywały sobie nawzajem zmienną globalną biblioteki. Dla architektury NT normalna sprawa, która tworzy "błędy" w czasie wykonywania kodu. Błędy, które powodują nadpisywanie pamięci wprowadzając mylne informacje do systemu handlowego decydującego o kupnie lub sprzedaży waloru. Na skutki nie było trzeba długo czekać - ceny jednego waloru wpływały na decyzję związaną z innym. Diagram z boku ilustruje sytuację, która nie zdarza się często - bo kiedy ostatnio napisałeś program którego wątki odwołują się do jednej funkcji z tej samej biblioteki DLL, w której z konieczności wykorzystujesz zmienną globalną ? Aby rozwiązać problem

06 maja 2015

Cracking fundamentals based on the example of CrackMe2 by massh^CookieCrK (W32Dasm version)

I wrote this tutorial many years ago for Software 2.0 magazine. At that time developers used several tools for debugging a code. Generally I used to use the most popular and powerful software, SoftICE by NuMega. A tool frequently used by crackers, it's a debugger whose main task is to monitor and control the processes performed in the system. But it's commercial solution - now it's not for everyone becouse is no longer develop. So, I decided to crack a simple software protection using another popular tool W32Dasm Version 8.9 by URsoftware. Let's strat.
INTRODUCTION: ‘Cracker’ is a term that refers to a programmer who deals with the development and circumvention of computer software security. Breaking computer software security is the best way to increase your knowledge of software protection against illegal users. Cracker’s aim IS NOT to spread software piracy.
          The programs that help to break software security are generally referred to as cracks. I am going to present two ways to illegally register a security application which is included in CrackMe2 program. The author of the security program is a Polish cracker - massh from CookieCrK group. This type of program is developed by crackers in order to gain experience. It is also crackers who break such programs.

05 maja 2015

Transposition cipher

Today's section will be devoted entirely to cryptology. Cryptology is the study of ciphers and the methods of breaking them. I will try to describe one of the simplest methods of encryption, including the way of breaking it. The text includes the attached sources of the program encrypting a specified text by means of transposition, as well as the source file of the program aimed at breaking the encrypted text. The need of information encryption is only a little younger than the information itself. The ways of hiding information in a seemingly incomprehensible text have been known to us for thousands of years. One of them is the transposition method. In order to clearly illustrate what this method is about, I will use some tables. However, at first, a few basic concepts need to be explained:

04 maja 2015

Dummy code - trick for begginers

For quite some time I have been testing the capabilities of OllyDbg 2.01. I have never used this debugger at work, but the project has been developing for many years now and it could be an essential tool for analysts - not only the beginning ones. I wanted to check how it would cope with one of the oldest tricks of crackers - dummy codes. It is a method of hiding the CPU instruction opcodes in the parameters of the assembler instructions. The implementation of such codes in MASM32 is not particularly difficult, but it requires a number of tests before the release of the program - their use can lead to serious runtime errors. The method makes it difficult to analyze the executable code, which is why it is used by the blackHats to hide bugs or - used by software manufacturers to protect intellectual property rights. This way or another, the analyst must be able to recognize such a code. It is not difficult because debuggers start to behave strangely - with the code sliding - literally. The worst part is that only instruction tracking reveals the truth about the program. Below I present an example of using dummy codes in the assembler.

30 kwietnia 2015

Anti - PasswordSpy - capturing the window procedure

There are several ways of protecting programs against PasswordSpy which could be regarded as the "godfather" of various sorts of software designed to enable the preview of the editing controls with a password. Below I present my own way of protecting a control of the ‘Edit’ class. It is a simple solution that requires capturing of the window procedure with a password. Programs of this type use IPC, by sending - to the editing window with a password - the WM_GETTEXT message using SendMessage (HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam).
The third parameter of the function (wParam) is the size of the buffer to which the discovered passwords to be fit. It is the weak point that I used to protect the editing window with a password. By capturing the window PassEdit procedure, I have the opportunity to see how big the buffer is. If the length of the intruding buffer is different from the one we have programmed in our application, WM_GETTEXT for the window will not execute correctly.

08 kwietnia 2015

Cracking the user’s passwords in Outlook Express v.6.0 and Microsoft Outlook 2000 programs

I found this in the depths of my hard drive. I wrote this tutorial 12 years ago but contents is useful for now. I used to use SoftIce, but now IDA for Windows is a better choice. I return to this tutorial becouse currently I try to find out how secure are passwords in trading platforms.
This tutorial will consider achieving the user’s passwords in the mail programs Outlook Express v 6.0 and Microsoft Outlook 2000. I have got both of the programs installed in my Windows 2000 Server system. I decided to describe the two programs as one of them is absolutely for free – Outlook Express v 6.0, while the other is not, being a part of Microsoft Office 2000 packet. It is expected that the paid for version of the mail program guarantees at least minimum safety degree – I am not going to hide that, as the part of the program being responsible for coding the information was made by cryptography experts indeed. As for the protection of the passwords in the program, it is apparent that it was done by the experts of Microsoft. All listings of the codes come from the Outlook Express v.6.0, as I haven’t found the possibility to manage the identities and thus, the password responsible for logging in a mail box is the only possible password here. However the code in each program was the same, that is why the method will be effective for both.

19 listopada 2013

Śliskie kody w asemblerze

Od jakiegoś czasu testuję możliwości OllyDbg 2.01. Nigdy nie wykorzystywałem tego debuggera w pracy - ale od wielu lat projekt się rozwija i może być podstawowym narzędziem pracy dla analityków - nie tylko początkujących. Chciałem sprawdzić jak poradzi sobie z jedną z najstarszych sztuczek crackerów - śliskie kody. Jest to metoda ukrywania opkodów instrukcji procesora, w parametrach instrukcji asemblera. Implementacja takich kodów w MASM32 nie jest specjalnie trudna, ale wymaga wielu testów przed publikacją programu - ich zastosowanie, może prowadzić do groźnych błędów czasu wykonania. Metoda utrudnia analizę kodu wykonywalnego, dlatego jest wykorzystywana przez blackHat's do ukrywania szkodników lub do ochrony własności intelektualnych przez producentów softu. Tak czy inaczej analityk musi umieć rozpoznać taki kod.

03 czerwca 2013

Pi - pułapka

pi - film Darrena Aronofskiego, który otworzył reżyserowi drogę do wysokobudżetowych produkcji (Requiem for a Dream, Fountain, Wrestler, Black Swan) obejrzałem krótko po premierze w 1998 roku. 15 lat temu wrażenie robiła forma, scenografie z mieszkania Maximilliana Cohena, czarno-biała klisza i aktorzy bardzo precyzyjnie odgrywający swoje role. Główny bohater próbuje poznać wszech-liczbę. Wartość 216 cyfr będących fundamentem wszystkiego co znamy. Wątki religijny i giełdowy pozwoliły wprowadzić ważnych bohaterów do scenariusza - chciwych ludzi, którzy burzą spokój Maxa - analityka zainteresowanego tylko odkryciem liczby, przy pomocy której Bóg stworzył wszystko. Bohater nie ma wątpliwości, że taka liczba istnieje - dlatego trudno nazwać go fanatykiem. Bohater zna się na matematyce, dlatego nie można uważać go za amatora w dziedzinie. Bohater poświęca cały czas na obliczenia - dlatego, trudno posądzić go o słomiany zapał. Wzór analityka z problemami zdrowotnymi, którego praca skierowała na ścieżkę pomiędzy nauką i wiarą. Obecnie treść filmu jest mi bliższa. Max nie wie jak powstała znaleziona przez niego liczba, nie wie co oznacza ale potrafi z niej wyczytać przyszłość. Tak też jest przy analizie kodów i algorytmów - często natłok wskaźników lub złożoność algorytmów uniemożliwia odczytanie i zrozumienie istoty systemu zabezpieczeń lub EA w MT4.

17 kwietnia 2013

Systemy liczbowe - wprowadzenie do crackingu

Dziś krótka wzmianka o systemach liczbowych. Charakteryzując narzędzia pracy crackera należy je podzielić na programy do czytania i pisania. Analitycy czytają w języku assembler i szesnastkowym systemie liczbowym, a tworzą oprogramowanie w przy pomocy kompilatorów C++ posługując się systemem dziesiętnym. W latach '90 kiedy zaczynałem przygodę z analizą kodów panowało przeświadczenie, że cracker powinien pisać w assemblerze - swoim naturalnym języku. Tak też robiłem - wszystko co pisałem miało mały rozmiar po kompilacji, ścisłą kontrolę kodu i prostą funkcjonalność. Kiedy pojawiły się systemy wielozadaniowe, wywłaszczenie czasu procesora, stronicowanie pamięci i inne cechy systemów opartych na trzeciej generacji procesorów x86 (układ 80386 z 1985 roku - 32-bitowa szyna adresowa, tryby rzeczywisty, chroniony, virtualny) okazało się, że i tak OS decydował o rzeczach najważniejszych. Należało wypracować kompromis pomiędzy niezależnością od bibliotek oraz pragmatyzmem. I tak narzędzia powstawały w C++, a cracki w assemblerze.

01 października 2012

Tym razem coś dla wszystkich

Grabaż zawsze wie co u mnie słychać.

Fizyka kwantowa dla początkujących - Czyli dlaczego Alicja nie może dorosnąć - Lewis Carroll był przeciętnym matematykiem.

Coś dla programistów, analityków bezpieczeństwa, informatyków:
C++
Assembler
Cracking itp.

Muzyczne przygody:
Bruce Peninsula

Poniżej spis dostępnych materiałów:

25 lipca 2012

Błędy poznawcze dla początkujących graczy

Lista błędów poznawczych może być pułapką. Jeśli założysz, że nie będziesz ich popełniać to właśnie popełniłeś kilka z nich. Czytelniku, to że zdałeś sobie sprawę z błędów, o których popełnienie się podejrzewasz, a które zostały ujęte w opracowaniach naukowych, może popchnąć Cię w złudzenie kontroli i zaburzyć Twoją percepcję. Ich lektura jest obowiązkowa dla każdego analityka. Chciałbym skoncentrować się na tych, które popełniłem podczas trzech lat pracy nad algorytmami dla MT4. Niewielkie doświadczenie, które zdobyłem pozwoliło mi odpowiedzieć na podstawowe pytania:

27 października 2011

Anti - PasswordSpy - przechwytywanie procedury okna

Istnieje kilka sposobów na zabezpieczenie programów przed PasswordSpy, który jest "ojcem" wszelakiej maści softu do podglądania kontrolek edycyjnych z hasłem. Poniżej przedstawiam własny sposób na zabezpieczenie kontrolki klasy "Edit". Jest to proste rozwiązanie wymagające przejęcia procedury okna z hasłem.

14 grudnia 2010

Wstęp do crackingu

Programy, które likwidują zabezpieczenia w oprogramowaniu, ogólnie nazywa się crackami. Przedstawię dwa sposoby na nielegalne zarejestrowanie aplikacji dla zabezpieczenia, które jest zawarte w programie CrackMe2. Autorem zabezpieczenia jest polski cracker - massh z grupy CookieCrK. Programy tego typu, są pisane przez crackerów, w celu zdobywania doświadczenia. Łamaniem takich programów również zajmują się crackerzy - dla chwały i kasy ;-)

10 grudnia 2010

Szyfr przestawieniowy - transpozycja

Dzisiejszy odcinek w całości poświęcony będzie kryptologii. Kryptologia to nauka o szyfrach i metodach ich łamania. Postaram się opisać jedną z najprostszych metod szyfrowania oraz sposób na jej złamanie. Do tekstu dołączone są źródła programu szyfrującego zadany tekst metodą transpozycji oraz plik źródłowy programu łamiącego zaszyfrowany tekst.

02 grudnia 2010

Jak zrobić własnego TrueCrypt'a 7

TrueCrypt jest aplikacją skutecznie zabezpieczającą dane na dyskach twardych - opis programu. Jest oparty na otwartych źródłach dlatego można dostosować go do własnych potrzeb. Moim celem było uzyskanie takiego efektu: