Hakerzy.NET AntiVirus 2009 - Najlepszy darmowy antywirus

0

Ciekawy pomysł na wykończenie H.NET AV: [diabel]
Pobieramy testowy wirus (jak tutaj podawany już EICAR), zmieniamy jego nazwę i wysyłamy do sprawdzenia przez tych od AV.

Najlepsze to to, że jak zmienimy nazwę na np. KB, nie pobierzemy łatek Micro$hitu, setup - 90% instalatorów uzna za wirusy itd., nie daj Boże używane przez wirusów svchost.exe - po "brutalnym wyrzuceniu" padnie pół systemu [rotfl]

I pozwolę na cytat (jest napisane literkę w literkę jak ze strony, nawet z błędami)

  • konkurencyjna bazy sygnatur wirusów
    No... hmm...

wykrywanie oszukanych plików pułapek
Ciekawe, jak można oszukać pliki....

PS. w czasie pisania postu w sekcji Wykryte (na stronce) znalazłem setup.exe... ktoś chyba wiedział :D

Więc jeśli H.NET AV wykrywa wirusy przez nazwę, już niedługo 99% użytkowników AV będzie brało płytki z Win$hitem :D a pozostały 1% przywróci obraz dysku :D

Edit: co do "konkurencyjnej bazy": o 19:51 (9 sierpnia) w bazie było 87283 wirusów, kiedy w 2007 roku odkryto wraz z odmianami, według statystyk, 5.5 mln wirusów. Bez odmian to pewnie coś koło 0.5 mln.

0

uwaga uwaga wazny cytat:

 Hakerzy.NET  AntiVirus  nie zawiera żadnego złośliwego kodu, a już na pewno nie robaka internetowego czy wirusa. Nie jest to nasz błąd, że AVAST wykrywa naszego strażnika jako robaka internetowego - to się nazywa "konkurencja", która już na początku wyjścia wersji v0.3 próbowali nas "zniszczyć". Nasz moduł od wysyłania podejrzanych plików e-mailem (dostępny w menu strażnika) używając wbudowanego mechanizmu obsługi SMTP zawarty w strażniku jest wykrywany przez AVAST'a błędnie, gdyż według programistów AVAST'a jest to narzędzie do rozsyłania swoich kopii, dla nas to jest śmieszne. 

:d przyznaje to wina avasta dlatego usuwam go z kompa jego miejsce zajmuje AV 2008 ! [browar] teraz moge byc bezpieczny

0
nowosc napisał(a)

uwaga uwaga wazny cytat:

Hakerzy.NET AntiVirus nie zawiera żadnego złośliwego kodu, a już na pewno nie robaka internetowego czy wirusa. Nie jest to nasz błąd, że AVAST wykrywa naszego strażnika jako robaka internetowego - to się nazywa "konkurencja", która już na początku wyjścia wersji v0.3 próbowali nas "zniszczyć". Nasz moduł od wysyłania podejrzanych plików e-mailem (dostępny w menu strażnika) używając wbudowanego mechanizmu obsługi SMTP zawarty w strażniku jest wykrywany przez AVAST'a błędnie, gdyż według programistów AVAST'a jest to narzędzie do rozsyłania swoich kopii, dla nas to jest śmieszne.

:d przyznaje to wina avasta dlatego usuwam go z kompa jego miejsce zajmuje AV 2008 ! [browar] teraz moge byc bezpieczny

PS1. To KłamsTVo. Dwa antywirusy (jakiekolwiek) zawsze będą się gryźć, gdyż każdy antywirus jest z bazą wirusów (odkrywcze :D) zawierającą próbki wirusów. I właśnie jeden wirus wykrywa "wirusy" w pliku bazy... A co do posta wyżej, co miałoby obchodzić korporację (bo nie?) jakaś polska firma rozprowadzająca dopiero wchodący "AV"?

PS2. Ja doczytałem, że jego wersja to 2009, nie 2008. Przynajmniej w nazwie postu :D

0
Noob Saibot napisał(a)

Program zawsze będzie darmowy i rozwijany, choć wiążą się z tego tytułu nieprzyjemności ze strony konkurencji - nie mam zamiaru się poddawać.

Noob Saibot napisał(a)

Skłoniły mnie do tego groźby konkurencji.

Noob Saibot napisał(a)

Dla mnie "obrona" przed konkurencją to dodatkowa adrenalina i motywacja są w życiu większe problemy.
Większość z Was nie wie tak naprawdę co oznacza słowo "konkurencja" w rzeczywistości.

O co Ci z tą konkurencją chodzi? Przyszkli do Ciebie kolesie z Symanteca i powiedzieli ze Ci nakopia jak bedziesz robił darmowe antywiry?

0

Odnoszę wrażenie, że jego psychika zamienia w locie każdą krytykę na złośliwą konkurencję i to jest ta jego siła napędowa. Taka konkurencja jak Symantec nawet nie wie kto to jest ów Olszewski ;)

0
CyberKid napisał(a)

Odnoszę wrażenie, że jego psychika zamienia w locie każdą krytykę na złośliwą konkurencję i to jest ta jego siła napędowa.

Jezeli ta sila sie na cos przyda to nawet dobrze. A antywirus jak juz zacznie dzialac to moze bedzie cos warty, jezeli choc polowa z opisu bedzie spelniona ;)

0

na razie to zupełnie nie chce działać nawet jak mu na siłę wciskam wirusy zgodne z tymi "ostatnio wykrytymi"

0
Ptwr napisał(a)

ściągnąłem, wrzuciłem na maszynę do pisania ( P133mhz ) i puściłem skana =]

muszę pogratulować szybkości skanowania, pusty plik tekstowy skanuje tyle samo co 50 megowe archiwum czy kilku megowego exe'ka =D

ooo! to to ZIPa sobie otworzyło, RARa nie tknęło nawet ( np NOD grzebie w środku )

jedne z pierwszych wyników google ( http://www.eicar.org/anti_virus_test_file.htm ) dla "test your anti-virus" oferuje wiruska EICAR ( wypisuje w konsolce że jest wirusem i tyle ) do ściągnięcia

NOD nie dał nawet rozpocząć transferu, gdy ściągnąłem na drugim kompie z AV2k9 nic się nie stało, skan oczywiście nic nie wykrył =D

gdy udostępniony folder z EICARem otworzyłem na tym kompie od razy zobaczyłem okienko buzujące od czerwieni =]

Once downloaded run your AV scanner. It should detect at least the file "eicar.com". Good scanners will detect the 'virus' in the single zip ARCHIVEe and may be even in the double zip ARCHIVEe. Once detected the scanner might not allow you any access to the file(s) anymore. You might not even be allowed by the scanner to delete these files. This is caused by the scanner which puts the file into quarantaine.

NOD spełnił wyżej opisane warunki dobrego antywirusa AV2k9 nie =]

więc cóż... jest powód żeby nie polecać tego AVka

a co do antyreklamy na innych forach to o ile dobrze pamiętam tylko na dwóch i tylko w formie linku do tego tematu i jedno linijkowej zachęty do przeczytania =D
</quote>

  1. A to dziwne z tym pustym plikiem, ponieważ programowo pliki o rozmiarze 0 nie są skanowane.
  2. EICAR nie jest wirusem to po pierwsze.
othello napisał(a)

hmm to ja jeszcze zadam pytanie - moge prosic przyklad chociaz kilku prawdziwych wirusów wykrywanych przez ten program?

Mam juz sciagniety i zainstalowany - niech autora zamiesci link to pliku z wirusem, ktory bedzie wykrywany powiedzmy przez Avasta i Antywirus 2008

Wówczas będziemy wiedzieli ze nie jest to fake (bo na razie wyglada bardziej jak fake).

Bardzo proszę:
http://olszewskisoftware.com/virki.zip

wikipediahehe napisał(a)

Rozgryzlem dziada haha :D z tą bazą av to prawda !!!! ma baze kilkutysieczna ten av2008 ....
uwage trzymac sie krzeseł.... BAZE NAZW WIRUSÓW .... ponizej pseudokod zajarzycie Od razu :D :

if skanowanyplik.name = jest w bazie stringow then alert WYKRYTO VIRUSA :D [soczek] [rotfl]

Kompletna bzdura.

Ptwr napisał(a)

na razie to zupełnie nie chce działać nawet jak mu na siłę wciskam wirusy zgodne z tymi "ostatnio wykrytymi"

Kolejna bzdura.

0
Noob Saibot napisał(a)
  1. A to dziwne z tym pustym plikiem, ponieważ programowo pliki o rozmiarze 0 nie są skanowane.
  2. EICAR nie jest wirusem to po pierwsze.

Czlowieku EICAR to jest wirus tyle ze bezpieczny i wiesz co ? pal licho zasra*** EICAR ... wirusy sprzed paru lat nie sa wykrywane ...nie oszukujmy sie ten program nie dziala -- mzoe u Ciebie jak sobie napiszesz swojego wirusa to mzoe go wykryje temat perelka !!!!! bo ja rozumiem ktos tworzy amatorskiego FV i mowi otwarcie ze to mini projekt ale jak Ty wyskakujesz z funkcjami o ktorych nie masz pojecia to ja nie moge ...
Badzmy szczerze twoj program funkcjonalnoscia dorównuje Hello world .... [rotfl]

0

Cóż, melduję się wyjątkowo, po dłuższej nieobecności. Tak się złożyło, że miałem chwilę wolnego czasu na pobawienie się tym cudem techniki /w sumie zostałem tutaj ściągnięty, ale mniejsza o to/.

othello napisał(a)

Zdaje sie ze ekipa od asm/disasm jest na wakacjach...

Zawsze do usług, przyznam się, że rzuciłem tylko okiem na konsolowy skaner, wystarczyło. Mimo iż nie pracuję aktualnie w branży AV powinienem chyba się wypowiedzieć :-)

Ok, od czego by tutaj zacząć? Może od tego, że autorem wątku jest Pan Piotr Olszewski? Przejdźmy może do omówienia 'oferty'.

Nowy unikalny anty wirus...

Przepraszam bardzo, już takiego antywirusa kiedyś miałem... na C64. Wymienionych zagrożeń po prostu nie może wykrywać w sensowny sposób, a części w ogóle... ale o konkretach potem.

  • bezpłatne użytkowanie i aktualizacje oprogramowania dla wszystkich

Firmy i tak AV kupują, użytkownicy prywatni mają dostępną za free chociażby Avirę, jeden z lepszych wedle Virus Bulletin sprzętów ostatnio.

  • możliwość bezproblemowej współpraca z innymi anty wirusami

Taaaak, tylko dlatego, że programem antywirusowym nazwać go nie sposób.

  • konkurencyjna bazy sygnatur wirusów

Ani konkurencyjna ani sygnatur... gdzie tutaj może być konkurencja, co? Tak się składa, że w branży AV często się dostaje viri po znajomości, od ludzi pracujących u 'konkurencji'.

  • brutalne zamykanie procesu wirusa w pamięci

Tak, bardzo brutalne - zwykłe OpenProcess + TerminateProcess, to nawet SK obejść potrafi robiąc hooka w ring3.

  • brutalne wyładowanie zainfekowanej biblioteki bądź zainfekowanego sterownika (tylko NT)

Masz na myśli to GetModuleHandle + FreeLibrary? Tak się składa, że ta procka Ci stos rozwala i gdyby nie obsługa wyjątków to program poleciałby w kosmos, a tak - udajesz, że nic się nie stało. Przypomnę tylko, że GetModuleHandle działa tylko na lokalny, Twój, proces... ale pomysł zaiste ciekawy.

  • szybki moduł skanujący pliki

[rotfl] Szybki? To cudo ma wydajność kilku średnich plików jpg (?!) na sekundę przy procesorze obciążonym na 100%. Dlaczego? Napiszę potem.

  • wykrywanie oszukanych plików pułapek

Czegoś takiego nawet nie ma... ok, już jest - wygenerowałem sobie kilka pliczków generujących fałszywe alarmy... pliczków tekstowych.

  • małe obciążenie systemu

Małe? Już pisałem jak wygląda sprawa wydajności... odpal Avirę albo NODa i skonfiguruj do identycznej pracy jak Twoje cudo, wydajność będzie wielokrotnie większa.

  • wbudowane więzienie, pozwala na przechowywanie zainfekowanych plików w jednym skompresowanym pliku

Wrzucenie w borlandowską bazę danych wira to faktycznie więzienie....

Nie miałem okazji przetestować na wirusach.

Widać chociażby po bazie 'sygnatur'... i po tym, że mam kolekcję najpowszechniejszego malware'u ostatnich lat - skanowanie zajęło z pół godziny, nie znaleziono absolutnie nic.

johny_bravo napisał(a)

Prawdopodobnie nic sie nie stanie, bo tez nic ten program chyba nie robi

Zapewniam Cię, że robi, skanuje... prawie tak jak ClamAV.

dżejo napisał(a)

Jeśli ktoś włoży sporo pracy i złych intencji w napisanie
wirusa to rozpracowanie go przez fachowca zajmie trochę czasu
co przekłada się na konkretny szmal .
Czy to jest więc podstawą do wspólpracy między firmami
czy wręcz przeciwnie - konkurencji w pisaniu oprogramowania.

Oficjalnie to się raczej nie współpracuje... ale i tak chłopaki podsyłają sobie próbki po znajomości.

Program zawsze będzie darmowy i rozwijany, choć wiążą się z tego tytułu nieprzyjemności ze strony konkurencji - nie mam zamiaru się poddawać.

Chyba sobie żartujesz? Nieprzyjemności ze strony konkurencji? W branży AV? Mam wrażenie, że o branży AV wiesz tyle ile o programowaniu... Nikt się nie przejmuje takimi płotkami, co najwyżej jest trochę śmiechu kiedy ogląda się takie wypociny. Chcesz mi powiedzieć, że HispaSec, Symantec, ESET czy powiedzmy F-Secure coś w ogóle do Ciebie miały? Wybacz, ale realia tej branży są całkowicie inne, nie rób z siebie ofiary, męczennika...

Program jest napisany w legalnym Borland Delphi 2007 Professional ( ttp://olszewskisoftware.com/faktura.jpg ), którego zakupiłem bezpośrednio od firmy CodeGear.
Skłoniły mnie do tego groźby konkurencji. Wziąłem kredyt gotówkowy i zakupiłem oryginalne, legalne oprogramowanie w celu rozwoju tego antywirusa, a w przyszłości innych oprogramowań mojej firmy.

Do produkowania i rozpowszechniania darmowego oprogramowania firmy mieć nie musisz, zaś skoro AV jest darmowy to mogłeś go legalnie rozwijać na Delphi w wersji Personal...
...ach, nie mogłeś, Personal nie ma komponentów do obsługi baz danych, a jak wiadomo bez InterBase nie stworzy się antywirusa... co mam na myśli? To potem...

Na początku serwer zbiera informacje na temat tych plików przeprowadzając rutynową analizę, następnie odpowiednie oprogramowanie stworzone do tego celu ułatwia i pozwala na szybką analizę plików, dodatkowo istnieje możliwość użycia skanerów internetowych, odpalanie pliku na wirtualnej maszynie z zainstalowanym Windowsem XP oraz narzędziami monitorującymi system w celu analizy zachowania się pliku, a na końcu kilka metod generowania sygnatury dla pliku, także według własnego spostrzeżenia w pliku. W sumie analiza tych plików trwa do 2h.

Hm, bardzo podobną wypowiedź czytałem kiedyś na forum ArcaBitu.. gdybym nie wiedział, że to pisała inna osoba - powiedziałbym, że to to samo. Różne metody generowania sygnatur? Kłamstwo! Tego nawet sygnaturą nazwać nie można, do tego rodzaj danych użytych jako sygnatura jest jednoznaczny, nie ma wielu metod, jest jeden ściśle określony /i spaprany/ algorytm.

Głównie programuje w Delphi (Object Pascal) i wielu innych językach [...]

To jakiś argument? Pomijając, że takich błędów w kodzie /vide wspomniany, niezauważony, stack overflow/ i złego stylu jeszcze nie widziałem w oprogramowaniu AV. Nadużywanie zmiennych globalnych, ewidentne tworzenie kodu metodą kopiuj-wklej...

Nie wstydzę się tego, że mieszkam na wsi niedaleko Częstochowy.
Nie wstydzę się tego, że zawsze mówię prawdę, także w wywiadzie dla gazet [...]

Gdybyś nie był kłamcą to moglibyśmy iść na piwo, jak RE z RE...

Tutaj muszę przerwać na chwilę pisanie aby opanować nerwy...

Żadna mi nowość, w ciągu 3 lat rozwijania tego anty wirusa spotkałem się z lepszymi działaniami konkurencji oraz osób z nimi powiązanych nawet ciekawymi typu: [...]

Coś o konkurencji już pisałem... konkurencja w branży AV to odkupienie sobie pracownika konkurencji, ew. informacji o badaniach... Ty nie masz nic, co mogłoby zainteresować kogoś z firmy AV.

  • wykrywanie u niektórej konkurencji mojego oprogramowania jako niebezpieczne

Aktualne skany z VirusTotal, poświęciłem się i wrzucałem pojdynczo abyś nie stwierdził, że to wina spakowania: HakerzyNET_AV.exe, HakerzyNET_MAV.exe, APIHook.dll, APIScan.dll, HakerzyNET_Menu.exe. Jakoś nie widzę tej wykrywalności u konkurencji, eSafe ma prawo się czepiać za metody, które stosujesz, robisz bardzo dużo hałasu.

  • śmieszne maile typu: "jak nie skonczysz z nim to spalimy twoja chate".

Tak, śmieszne... nie wierzą abyś w ogóle taki mail otrzymał.

  • groźby: "Jeśli Pan nie wycofa tego oprogramowania, zrobimy wszystko co w naszej mocy, aby zniszczyć Panu opinie."

o to pewnie mnie nasłali? Cóż, mam kumpla w HispaSecu, pewnie od sfałszował wyniki... a może tak zejdziemy na ziemię i szczerze pogadamy o jakości i funkcjonalności reklamowanego oprogramowania?

  • a nawet prośby sugerujące zazdrość: "Prosze o udostępnienie kodu źródłowego programu, bo chciałem sobie napisać lepszy"

Wiesz, to tylko głupi żart, nawet najbardziej początkujący pracownik laboratorium AV zapewne lepiej sobie poradzi z Twoim programem za pomocą debuggera i disassemblera niż edytora i dostępu do źródeł.

Podkreślam, że "koncern" antywirusowy jest bardzo duży, nowo powstały program antywirusowy w dodatku darmowy stawia pewne zagrożenie w kapitale "konkurencji" z której kilku użytkowników rezygnuje na czas testu nowego darmowego oprogramowania, a nawet przejścia na niego. Zachęcam do stworzenia własnego darmowego antywirusa ludziom o mocnych nerwach, którzy poświęcą się niemu.

Tacy jak Ty tylko swoją obecnością nabijają kieszeń firmom AV - użytkownik przejedzie się na darmowym AV to kupi licencję na coś wartościowego. Ja zaś nie zachęcam, do tworzenia tak specyficznego i zaawansowanego oprogramowania jak antywirus potrzeba wieloletniego doświadczenia i rozbudowanej wiedzy - podstawową cechą antywirusa jest skuteczność, tej nie uzyska się dzięki doświadczeniu w układaniu komponentów.

Do autora wątku:
Aż miło, że są ludzie, którzy potrafią człowieka podnieść na duchu pozytywnie komentując jego wkład w oprogramowanie, nie wspominając o tworzeniu stron internetowych na temat jego oprogramowania.

Piszesz do siebie? Ok, niektórym rozmowa z samym sobą pomaga przy problemach emocjonalnych, nie wnikam...

Bardziej przejmnę się wykrytym błędem, niedopracowaniem, propozycją, nowym zagrożeniem.

Proponuję przejrzeć źródła ClamAVa i zacząć od początku, ten antywir przynajmniej ma sensowny system sygnatur opartych na wyrażeniach regularnych, obsługuje packery plików wykonywalnych, jest dosyć wydajny i skuteczny... czyli zawiera wszystkie propozycje zmian.

Przejdźmy do propagandy ze strony:

Nasza kosiarka tnie wszystkie wirusy jakie padną jej na drodze, np. nie ważne czy wirus siedzi w pamięci i jest używany - nasz anty wirus jest tak brutalny, że sam go wykurzy i zniszczy.

Powiem tak - plik jest otwarty. Tyle. Co to ma znaczyć? Jeżeli plik nie jest uruchomionym procesem lub nie uda się tego procesu ubić prosząc go o to grzecznie za pomocą WINAPI to 'AV' po cichutku idzie dalej, w międzyczasie równie cicho rzucając wyjątkiem...

Jeśli Twój dodatkowy anty wirus nie jest w stanie usunąć jakiegoś wirusa z Twojego dysku, a nasz anty wirus go nie wykrywa nie lękaj się, proszę wyślij go nam, a my przeanalizujemy go w zaledwie kilkanaście minut i już po upływie godziny udostępnimy nową bazę z nadesłanym przez Ciebie szkodnikiem i bez najmniejszego problemu nasz anty wirus usunie Ci go oraz jego kopie.

Mam rozumieć, że jak normalny program antywirusowy z poziomu jądra systemu, z pominięciem całego API nie potrafi modułu lub\i pliku usunąć to Twoje 'cudo', które posiada wyłącznie prawa zalogowanego użytkownika tak po prostu przy pomocy systemowego DeleteFile wywali? Chyba sobie kpisz, starczy otwarty uchwyt do pliku nie dający praw do usunięcia innym, aby Twój AV był bezradny. Zresztą, starczy, że wir zabierze na partycji NTFS prawa do usunięcia siebie... już leżysz. Nawet jeden z pamiętnych badziewnych trojanów, którymi 4p było zarzucane był na to odporny. Tak, trojan napisany przez dziecko.

Nasze technologie informatyczne zostały wcześniej już przetestowane.

w połączeniu z:

Nie miałem okazji przetestować na wirusach.

po prostu zabija...

OK, przejdźmy znów do dalszych postów.

othello napisał(a)

Wówczas będziemy wiedzieli ze nie jest to fake (bo na razie wyglada bardziej jak fake).

Zapewniam, że nie fake...

wikipediahehe napisał(a)

Rozgryzlem dziada haha :D z tą bazą av to prawda !!!! ma baze kilkutysieczna ten av2008 ....
uwage trzymac sie krzeseł.... BAZE NAZW WIRUSÓW .... ponizej pseudokod zajarzycie Od razu :D :

Tym, kolego, zapracowałeś sobie na pięknego bana, za trollowanie. Wątpię abyś w ogóle wiedział czym otworzyć tą bazę.

mnbvcX napisał(a)

PS1. To KłamsTVo. Dwa antywirusy (jakiekolwiek) zawsze będą się gryźć, gdyż każdy antywirus jest z bazą wirusów (odkrywcze :D) zawierającą próbki wirusów. I właśnie jeden wirus wykrywa "wirusy" w pliku bazy...

Nie zgodzę się, sygnatury to nie są zwykłe fragmenty kodu, nie są też w oryginalnej postaci - tak jak wspomniałem, np. ClamAV używa wyrażeń regularnych. Proponuję mając zainstalowanego antywira puścić skaner on-line... i nie wypowiadać się na temat, o których się pojęcia nie ma.

Dobra, tyle postów do komentowania, przjdźmy do modułu skanera konsolowego.

Od czego by tu zacząć? Może od tego, że prawie cały skaner to jedna, wielokilobajtowa, funkcja main? Ładną oprawę graficzna zapewniłeś, szkoda tylko, że zapomniałeś o wyczyszczeniu ekraniu i paru innych drobiazgach przed odstawianiem tej szopki, screen ze skanu paczki wirusów udostępnionej przez Szanownego Pana, przykre...

CODE:00422BE8                 lea     eax, [ebp+BaseFullPath]
CODE:00422BEE                 mov     edx, offset aBase_dat ; "base.dat"
CODE:00422BF3                 call    System::__linkproc__ LStrCat(void)
CODE:00422BF8                 mov     edx, [ebp+BaseFullPath]
CODE:00422BFE                 mov     eax, esi        ; MemoryStream
CODE:00422C00                 call    Ibsql::TIBXSQLVAR::LoadFromFile(System::AnsiString)

Przejdźmy dalej, czym jest wspomniana baza 'sygnatur'? To baza danych InterBase, co jest o tyle śmieszne, że jej odczytanie daje jeden blok danych, 87743-liniowy tekst. Początek zawartości:

000128f16b5918cf1b3081539ecbae9733368
00013e18bab72f21e56b486c8962e055332228
0001b9e684e799eeb9a663702c161d91743851
0003d9b55d7bde506827afe40252da5f944
000463b36bd1b43a586ef1b76c1f7b33949
0004887151668ca9e246abb0943fa9c9267264
0004c0947ba4b35a59182223763d61e4180224
000770803df2204e3ffd4d7ec0fb1ff371222
0007b23030d696c36e01cc244035601b359
0007bb6456c7c985e6070cb37ff03a64760

czyli wartości w formie hexstringa, o długości co najmniej 128 bitów. Tak, są to właśnie posortowane 'sygnatury'... które trafiają następnie do obiektu StringList. Dlaczego napisałem 'sygnatury'? Problem jest taki, że ten genialny program po prostu 'hashuje' /swoją drogą autor pojęcia entropii chyba nie zna.../ całe pliki uzyskując w efekcie dokładnie 128 bitowe wartości. Przyznam się szczerze, że wolę się nie zastanawiać nad pochodzeniem dodatkowych wartości... fragment procki konwertującej 'hash' na string:

CODE:0041D8D6                 mov     eax, edi
CODE:0041D8D8                 call    System::__linkproc__ LStrClr(void *)
CODE:0041D8DD                 mov     bl, 16
CODE:0041D8DF                 lea     esi, [ebp+tmpbuff]
CODE:0041D8E2 @@toHexStrLoop:                         ; CODE XREF: ConvertToHexStr+7Ej
CODE:0041D8E2                 push    dword ptr [edi]
CODE:0041D8E4                 lea     eax, [ebp+lNible]
CODE:0041D8E7                 xor     edx, edx
CODE:0041D8E9                 mov     dl, [esi]
CODE:0041D8EB                 shr     edx, 4
CODE:0041D8EE                 and     edx, 0Fh
CODE:0041D8F1                 mov     dl, byte ptr ds:a0123456789abcde[edx] ; "0123456789abcdef"
CODE:0041D8F7                 call    unknown_libname_71
CODE:0041D8FC                 push    [ebp+lNible]
CODE:0041D8FF                 lea     eax, [ebp+hNible]
CODE:0041D902                 mov     dl, [esi]
CODE:0041D904                 and     dl, 0Fh
CODE:0041D907                 and     edx, 0FFh
CODE:0041D90D                 mov     dl, byte ptr ds:a0123456789abcde[edx] ; "0123456789abcdef"
CODE:0041D913                 call    unknown_libname_71
CODE:0041D918                 push    [ebp+hNible]
CODE:0041D91B                 mov     eax, edi
CODE:0041D91D                 mov     edx, 3
CODE:0041D922                 call    System::__linkproc__ LStrCatN(void)
CODE:0041D927                 inc     esi
CODE:0041D928                 dec     bl
CODE:0041D92A                 jnz     short @@toHexStrLoop

Jasno wynika z niego rozmiar wyjściowego stringa. Czy wspomniałem już, że StringListy 'sygnatur' i plików do przeskanowania są zmiennymi globalnymi? Algorytm liczenia 'sumy kontrolnej' litościwie pominę. Sekret 'wydajności' tego stworzenia:

CODE:00422FCE @@HashCheckLoop:
CODE:00422FCE                 push    offset g_HashFromBase
CODE:00422FD3                 lea     ecx, [ebp+cCurrentHash]
CODE:00422FD9                 mov     edx, ds:g_Counter
CODE:00422FDF                 mov     eax, ds:g_HashList
CODE:00422FE4                 mov     esi, [eax]
CODE:00422FE6                 call    dword ptr [esi+0Ch]             ; StringList::Get(int)
CODE:00422FE9                 mov     eax, [ebp+cCurrentHash]
CODE:00422FEF                 push    eax
CODE:00422FF0                 mov     eax, ds:g_FileHash
CODE:00422FF5                 call    String__Size
CODE:00422FFA                 mov     ecx, eax
CODE:00422FFC                 mov     edx, 1
CODE:00423001                 pop     eax
CODE:00423002                 call    System::__linkproc__ LStrCopy(void)
CODE:00423007                 mov     eax, ds:g_HashFromBase
CODE:0042300C                 mov     edx, ds:g_FileHash
CODE:00423012                 call    System::__linkproc__ LStrCmp(void)
CODE:00423017                 jnz     @@NextHash

Jak widzimy 'sygnatura' z bazy jest kopiowana i przycinana do długości 'sygnatury' pliku. Zabieg o tyle bezsensowny, że rozmiar jest stały, być może to tylko głupota kompilatora... Dlaczego wspomniałem o wydajności? Ano, StringList do najszybszych nie należy, do tego jest przeglądany sekwencyjnie, od pierwszego do ostatniego, stringi są porównywane bajt po bajcie... Na Boga, człowieku, nie mogłeś przyciąć wcześniej skoro rozmiar jest stały?
Nie możesz tego przeglądać chociaż wyszukiwaniem binarnym skoro zadałeś sobie trud tworzenia posortowanej listy 'sygnatur'? Piszesz, że masz 7 czy lat doświadczenia w programowaniu, 6 lat w łamaniu zabezpieczeń i znasz assemblera... pojęcie złożoności obliczeniowej naprawdę jest Ci obce? Wygrywałeś konkursy z MDK? To może wypadałoby wspomnieć, że ich poziom jest wyśmiewany? Nie lepiej było poświęcić ten czas na Olimpiadę Informatyczną? Wyniósłbyś z niej chociaż to, że przeglądanie listy prawie 90k długich stringów najbardziej naiwnym możliwym algorytmem to głupota.

Wspomniałem coś o buffer overflow i durnym sposobie 'siłowego' usunięcia modułu?

CODE:00421C28 ; void __fastcall ROTFL_ForceUnload(char *pszModuleName)
CODE:00421C28 ROTFL_ForceUnload proc near 
CODE:00421C28
CODE:00421C28 strNameCopy= dword ptr -10h
CODE:00421C28 ModuleName= byte ptr -0Bh
CODE:00421C28
CODE:00421C28                 push    ebp
CODE:00421C29                 mov     ebp, esp
CODE:00421C2B                 add     esp, -10h
CODE:00421C2E                 push    ebx
CODE:00421C2F                 xor     edx, edx
CODE:00421C31                 mov     [ebp+strNameCopy], edx
CODE:00421C34                 mov     ebx, eax                        ; ebx = pszModuleName
CODE:00421C36                 xor     eax, eax
CODE:00421C38                 push    ebp
CODE:00421C39                 push    offset @@_seh_handler
CODE:00421C3E                 push    dword ptr fs:[eax]
CODE:00421C41                 mov     fs:[eax], esp
CODE:00421C44                 lea     eax, [ebp+strNameCopy]
CODE:00421C47                 mov     edx, ebx
CODE:00421C49                 call    unknown_libname_72              ; skopiowanie stringa
CODE:00421C4E                 mov     edx, [ebp+strNameCopy]
CODE:00421C51                 lea     eax, [ebp+szModuleName]
CODE:00421C54                 call    @WStrPCopy                      ; niespodzianka
...

O co chodzi? @WStrPCopy to praktycznie odpowiednik strcpy z C, równie niebezpieczny w rękach niewprawnych osobników... Zmienne lokalne zajmują 16 bajtów, z czego obiekt klasy String zajmuje bodaj 8, pozostałe 8 zaś zajmuje zwykła tablica charów znana z C. Nasz assemblerowiec się nie pochwalił umiejętnością posługiwania się tablicami znaków - do malutkiej tabliczki kopiuje dane ze znacznie dłuższego Stringa zawierającego ścieżkę, kończy się to nadpisaniem ramki stosu i pięknym wyglebieniem programu podczas powrotu z funkcji przy odpowiednim nadmiarze. Jeżeli ścieżka ma tylko kilka znaków to ustawiona na stosie struktura SEHa przetrwa i pozwoli programowi obsłużyć wyjątek, jeżeli jest te kilkanaście znaków - papa, adres handlera zostaje zniszczony, próba wykonania handlera błędów powoduje kolejny błąd... i kolejny...

Eksperyment do przeprowadzenia w domu: bierzemy jeden z wykrywanych wirów, najlepiej dll, wrzucamy gdzieś głębiej i otwieramy czymś blokującym usunięcie lub też na woluminie NTFS odbieramy prawa do usunięcia pliku, dajemy 'Skanuj'... papa, 'anty wirusie' [rotfl]

Nie pisałbym może takiego elaboratu gdyby tyczyło się to tylko tych błędów i niedoróbek gdybym znalazł tylko te po dokładnej analizie. Nie, to efekt tylko wstępnych oględzin jednego z modułów. Jako, że program jest robiony metodą Kopiego-Pejsta to mając więcej egzemplarzy skanera każdy jest podatny... Ale to jeszcze nic, najlepszy dowód na to, jakim kłamcą i oszustem jest autor:

CODE:0042378A @@FakeMemScan: 
CODE:0042378A                 mov     dx, 6           ; y
CODE:0042378E                 mov     ax, 1           ; x
CODE:00423792                 call    moveCursor
CODE:00423797                 push    1               ; dwMilliseconds
CODE:00423799                 call    Sleep
CODE:0042379E                 lea     edx, [ebp+newStr]
CODE:004237A4                 mov     eax, offset aSkanowaniePami ; "* Skanowanie pamięci procesów: "
CODE:004237A9                 call    _copystr
CODE:004237AE                 mov     edx, [ebp+newStr]
CODE:004237B4                 mov     eax, ds:stdout
CODE:004237B9                 call    _WriteString
CODE:004237BE                 mov     edx, ds:uFileNo
CODE:004237C4                 call    _WriteLong
CODE:004237C9                 mov     edx, offset sProcent ; " %"
CODE:004237CE                 call    _WriteString
CODE:004237D3                 call    System::__linkproc__ Flush(System::TTextRec &)
CODE:004237D8                 call    System::__linkproc__ _IOTest(void)
CODE:004237DD                 inc     ds:uFileNo
CODE:004237E3                 cmp     ds:uFileNo, 101
CODE:004237EA                 jnz     short @@FakeMemScan
CODE:004237EC                 mov     eax, ds:stdout
CODE:004237F1                 mov     edx, offset aOk ; " OK"
CODE:004237F6                 call    _WriteString

Dawny licznik plików robi za licznik pętli, osobliwej pętli. Co milisekundę raczy użytkownika informacją o kolejnym procencie przeskanowania pamięci uruchomionych procesów... i nic poza tym. W ogóle takiego mechanizmu zaimplementowanego nie ma i patrząc na powyższe cuda wątpię aby autor był go w stanie napisać. Tak, licznik plików bo praktycznie cały skaner + wszystkie pozostałe opcje odpalane z linii poleceń są zaimplementowane jako jedna tylko funkcja. To chyba ochrona przed konkurencją.

Skoro masz dłuższy staż jako RE - proszę, http://www.eset.pl/quiz.html zrób i zatrudnij się w Krakowie, jako młodszy stażem mogę zapewnić, że to zabawa na co najwyżej jeden wieczór :-)

Wkurzają mnie niemiłosiernie ludzi nazywający siebie hakerami, specjalistami, chwalący się wszędzie ilością lat w branży, jeżeli coś faktycznie umie to jest to po prostu widać, inaczej przynosi wstyd tak sobie jak i tym, pod których się podszywa. Widać teraz rynek zdobywa się wciskaniem softu na chama, robiąc w konia klienta na każdym kroku.
Tyle po wstępnych oględzinach, chyba na dziś wystarczy.

p.s. przepraszam za chaotyczność postu ale powstawal on pod wpływem silnych emocji i nieustannych uniesien spowodowanych przez wzmiankowany soft.

0

Do postu poprzednika dorzucę jeszcze to:

  1. Ten AV da się prosto wyrzucić przez Task Manager, a co dopiero mówić o wirusach, z których w działaniu połowy jest właśnie wyłączenie AV... Nawet napisałem program, którego zadaniem jest wyrzucić z pamięci AV...
  2. Do poprzedniego punktu: przy prawokliku na menu kontekstowe jest pole Wyjście, ja o tym zbyt dobrze nie myślę...
  3. Wydaje mi się, że właśnie on zyskuje użytkowników :D poprzez użyszkodników, którzy pobierają program tylko po to, żeby sprawdzić, czy na pewno znajduje się ta czy tamta śmieszna funkcja :D
0

a to to już zupełny wstyd :

user image

0

@up: Popraw ten obrazek bo nie działa.

deus napisał(a)

(...)
No, zobaczymy czy Olszewski będzie się po tym bronił, chociaż zbytnio nie ma jak... Ciekawie by też było jakbyś się zabrał do dokładnej analizy wszystkiego, pewnie takich buraków byłoby kilkaset tysięcy...

0
manfredek napisał(a)

No, zobaczymy czy Olszewski będzie się po tym bronił, chociaż zbytnio nie ma jak..

Jak to nie ma jak? Przecież deus to ewidentnie jakaś nasłana konkurencja :-D

deus napisał(a)

/w sumie zostałem tutaj ściągnięty, ale mniejsza o to/.

Ściągnięty przez konkurencję ;)

IMO szach mat, ale na prawdę jestem ciekaw co pan Piotr na to :)

0

na odpowiedź Pana Piotra czekam bardziej niecierpliwie niż na nowy cytat na bashu =D

testowałem ten błąd ( wyskakiwał przy wyłączaniu "strażnika", i ciekawe że za każdym razem było 6 =]
a errorka poprzedzało za każdym razem kilka Acces Volation, i raz po błędach winiak zabił explorera bo jak twierdził ~ "żądane czynności zagrażają bezpieczeństwu systemu"

no miodzio....

odpaliłem parę skanów na raz
Cannot open D:\syf\av\log.txt

jak podczas "skanowania" trzymałem gryzoniem za suwak w "logu" to skaner się zatrzymał

z 22 plików w łaskawie udostępnionej paczuszce jako wirus wykryło tylko 21 ( video.dll czuje się pominięty )

zawiodłem się gdy po zrobieniu listy plików przez skaner zmieniłem nazwę pliku a inny skasowałem i nie uzyskałem nawet marnego błędu dostępu =(

a sukces =D otworzyłem najmniejszy plik w notatniku i dopisałem na początku "huba", chyba każdy się domyśli jaki efekt w skanowaniu to dało

* pozwoliłem sobie oczyścić nieco wątek z dziecinnego wyśmiewania i bezpodstawnej krytyki... * deus

0

Od razu chcę powiedzieć, że mój post to nie jest pastwienie się nad ofiarą ale minimum, które trzeba napisać w takiej sytuacji.

Każdy początkujący programista popełnia w kodzie takie błędy jak Pan Olszewski i sam fakt ich popełniania jest dla mnie sytuacją najnormalniejszą w świecie. Ja też pisałem kiedyś takie potworki ale musiałem przez to przejść żeby zacząć w końcu tworzyć kod, który mogę pokazać światu, np. mojemu szefowi. Jednak to co robi Pan Olszewski przekracza wszelkie granice przyzwoitości i zasługuje tylko na piętnowanie oraz przedstawianie innym początkującym jako przykład, którego nigdy nie powinni naśladować. Jak można na bazie tak małej wiedzy zakładać firmę, opłacać ZUS, kupować profesjonalne oprogramowanie i reklamować swoje dziadostwo!!! na całą Polskę nazywając to antywirusem?! To jest tragedia, że tacy ludzie pchają się na rynek i przy okazji ośmieszania siebie, ośmieszają narzędzia jakimi się posługują (Delphi) oraz programistów w ogóle. Na miejscu Pana Olszewskiego spaliłbym się teraz ze wstydu. To co napisał deus zdemaskowało poziom jaki prezentuje sobą Pan Olszewski i jego antywirus. Jakość tego oprogramowania jest na tak żenująco niskim poziomie, że ja na miejscu autora usunąłbym to z dysku żeby nie mieć złych nawyków w przyszłości.

Z przykrością muszę zgodzić się ze zdaniem wielu osób z tego forum, którzy powtarzali wielokrotnie, że Delphi sprzyja ujawnianiu się pseudo-programistów, którzy absolutnie nic nie potrafią ale pchają się ze swoim wyklikanym albo napisanym w jednej funkcji softem do ludzi...

0

Cos mi sie wydaje ze szanowny autor juz sie tu nie pojawi... zreszta co by mial odpowiedziec?
Ja osobiscie jestem daleki od bezpodstawnej krytyki czy wysmiewania. To fajnie ze, czlowiek chce cos zrobic, zaistniec.

Ale szkoda, ze traktuje przy tym innych jak idiotów. Jak można liczyc na to, ze nikt nie zorientuje sie ze te program to crap i chwalic sie ze jest taki idealny?

0

@othello - mnie się jednak wydaje, że to nie jest jakiś spisek i próba zrobienia z ludzi idiotów ale zwykła niewiedza i przecenianie swoich umiejętności. Pan Olszewski zamiast wydawać pieniądze na utrzymanie firmy i zakup oprogramowania powinien przeznaczyć je na dalszą naukę. Jak słusznie zauważyłeś godnym pochwały jest fakt, że człowiek chce coś zrobić ale to co robi Pan Olszewski jest żenujące, a nie chwalebne.

0

Autorowi przydalo by sie po prostu troche samokrytyki i realnego podejscia do swiata. Nie wystarczy zwalic wszystkiego na konkurencje (ktora akurat tutaj, jak udowodnil deus, nie miala po co by sie interesowac w ogole), zeby ludzi chwycilo za serce i ze zwyklej dobroci instalowali cos, co nie dziala.

Samokrytyka przydalaby sie w liczeniu doswiadczenia - jak ja bym policzyl swoje od momentu, kiedy pierwszy raz napisalem kod w asm na c64 do teraz, kiedy zajmuje sie programowaniem zawodowo to by wyszlo z 15 lat, z czego istotne zawodowe jest jakies 5 ostatnich. To jest roznica.

Samokrytyka tez by sie przydala przy ocenie wlasnego oprogramowania, gdzie stwierdza sie krytycznym okiem ile to jest warte. Ten 'antywirus' jest gadzetem. Jako antywirus jego wartosc jest ujemna, nie zerowa, bo wprowadza ludzi w blad. Jest gadzetem, bo jest programem napisanym dla siebie, dla sprawdzenia sie i zmierzenia z zadaniem. Wyszlo, jak wyszlo, jakies doswiadczenie sie z tego wynioslo. Ale wciskac tego ludziom nie mozna, bo wstyd.

0

Zgadzam się z Adamem. Gośc, o którym piszemy, w wieku 12 lat dorwał Delphi, zaimplementował pare helloł worldów, które znalazł na 4p i skakał z radości, bo w tym wieku wszyscy jego rówieśnicy ciupali tylko w Quake`a czy Dooma. Potem wygrał pare konkursów, o ktorych deus pisał, że mają marny poziom (zakładam, że Olszewski nie dopuszczał tego do wiadomości) i jego mniemanie o sobie jeszcze bardziej urosło. Na koniec koledzy z wioski zobaczyli jakie cuda potrafi czynić ich pan Piotr i się zaczęło.

IMO gość po prostu nie miał realnego punktu odniesienia z którym mógłby porównać swoje umiejętności.

0
CyberKid napisał(a)

IMO gość po prostu nie miał realnego punktu odniesienia z którym mógłby porównać swoje umiejętności.

Zgadzam sie :) 7 lat temu to ja myslalem, ze znam c++ na wyrywki, bo pisalem programiki strukturalnie i dzialaly :P Nie wiedzialem wtedy po prostu ile jeszcze nie wiem.

0

Po części to pewnie prawda, ale...

IMO gość po prostu nie miał realnego punktu odniesienia z którym mógłby porównać swoje umiejętności.

No bez jaj, jezeli koles pisze ze jego antywir jest NAJLEPSZY i INNOWACYJNY to mamy tu punkt odniesienia - odnieśmy to do prawdziwych antywirusów

Tak samo jak to o "konkurencji". Jasne, po przeanalizowaniu dzialania i skutecznosci programu konkurencja sie przestraszyla, ze pan Olszewski im zagrozi - Symantec juz zaczal srac w gacie ze strachu i uciekać się do podłych metod zastraszania. LOL
Przeciez wiadomo ze to nieprawda - no chyba ze koledzy z wioski wyslali mu kilka takich maili dla jaj, a biedak wzial to na powaznie....

0

BLA BLA BLA gadacie wszyscy o tym samym , niektorzy nawet dodają swiadomie lub nie, jacy to oni super programisci 15 lat doswiadczenia ojoj , nie mieszkaja na wsi, nie dorwali majac 12 lat delphi do rąk, sa obiektywni itd itp PO CO TO GADANIE ? ja sie zgadzam ze ten AV to kompletna szmira i dotego autor to partacz i marzyciel, ale <ort>poco </ort>wałkowac to samo ciagle? mnie takze to rozbawilo i napisalem jzu co o tym sadze, ale jak czytam wasze niektore posty to żal sie robi, dowaliliscie mu ze hej i slusznie ale <ort>poco </ort>jeszcze po nim dodatkowo deptac ?

0

Pozwolę sobie jeszcze dodać coś, na co wpadłem podczas przerwy na kawę.

Piotr Olszewski w licencji napisał(a)
  1. Oprogramowanie jest legalne, zostało stworzone i skompilowane w legalnym środowisku przez wyżej wymienioną osobę działającą indywidualnie oraz nie wymaga pisemnej zgody autora na jego użytkowanie.

Cóż, przyznam że perspektywa sprawdzenia kiedy i w czym został stworzony program wydała mi się wielce kusząca i na tyle prosta i szybka do wykonania, że mogę sobie na nią pozwolić...
Wedle aktualności na hakerzy.net aktualna wersja programu ukazała się pod koniec ubiegłego roku:

Nowa wersja programu Hakerzy.NET AntiVirus
17 listopad 2007 Napisany przez Administratora
Hakerzy.NET AntiVirus 2008 wersja 0.6 dostępna jest już do pobrania na stronie lub aktualizacji w poprzedniej wersji programu.

Z przedstawionego skanu faktury wynika iż komercyjna wersja Delphi została zakupiona 7 marca bieżącego roku. Pozwoliłem więc sobie na sprawdzenie sygnatury znajdującej się w DVCLAL, wyniki? Wygląda na to, że wersja pakietu, w którym skompilowano aktualną binarkę tego softu to Enterprise, z poprawnym kluczem.
Proszę więc szanownego Pana Olszewskiego o przedstawienie faktury na środowisko, w którym pakiet zbudowano.

Hm...

  1. Zabrania się modyfikowania, dekompilacji, deassemblacji, zmieniania i jakiejkolwiek innej ingerencji w pliki (lub ich części). Każdy taki przypadek nieautoryzowanego użycia spowoduje natychmiastowe ofnięcie licencji i może skończyć się wejściem na drogę sądową.

Ojej, złamałem licencję :| 'Może' oznacza w tym momencie - 'nie skończy się'. Tym bardziej, że powyższy fragment zawiera błąd logiczny, podciąga statyczną analizę pod ingerencją w plik - takiej zaś nie było.

  1. W miarę potrzeby Piotr Olszewski z grupy Hakerzy.NET™ może publikować poprawione lub nowe wersje licencji. W takiej sytuacji liczy się tylko ta najnowsza wersja dostępna zawsze z najnowszym programem stanowiącym całościowy produkt.

To zaś jest chyba niezgodne z obowiązującym prawem...

...a już miałem taką chęć pobawić się wieczorkiem HakerzyNET_Menu.exe, bo tam właśnie znajduje się całe GUI programu i najbardziej ciekawiące mnie klamoty jak konfiguracja heurystyki czy 'skanowania w strażniku po uruchomieniu' /ochrona aktywna?/. Cóż, pozostaje mi liczyć na to, że umowa jest niezgodna z prawem i lub też autor nie będzie popełniał samobójstwa chcąc mnie zaciągnąć do sądu.

@johny_bravo, jak widać po przedstawionym wcześniej screenie jednak programu użyłem.

0
ipohuto napisał(a)

jacy to oni super programisci 15 lat doswiadczenia ojoj

Jak to do mnie to przeczytaj jeszcze raz to co napisalem, bo dotarles do 1/3 wypowiedzi najwyrazniej.

@deus: zeby Ci cofnac licencje, to najpierw chyba musialbys go uzywac ;)

0

Proszę więc szanownego Pana Olszewskiego o przedstawienie faktury na środowisko, w którym pakiet zbudowano.

...którego zakupiłem bezpośrednio od firmy CodeGear.
Skłoniły mnie do tego groźby konkurencji.

wychodzi na to że nie ma co przedstawiać, może ktoś kiedyś zrobił to co przed chwilą Deus a P.O. się zmotywował do legalności ?

9. W miarę potrzeby Piotr Olszewski z grupy Hakerzy.NET™ może publikować poprawione lub nowe wersje licencji. W takiej sytuacji liczy się tylko ta najnowsza wersja dostępna zawsze z najnowszym programem stanowiącym całościowy produkt.
a o tego się chyba tyczy zasada że prawo nie działa wstecz (?)
czyli jeśli w licencji pojawi się zakaz tej statycznej analizy to i tak nic nie da na te już przeprowadzone

Większość z Was nie wie tak naprawdę co oznacza słowo "konkurencja" w rzeczywistości.
jeśli jest taka jak Deus to naprawdę można ulec załamaniu =D
a konkurencja to walka o te same zasoby ( np użyszkodników )

0

Noob Saibot:

  • brutalne zamykanie procesu wirusa w pamięci

deus:

Tak, bardzo brutalne - zwykłe OpenProcess + TerminateProcess, to nawet SK obejść potrafi robiąc hooka w ring3.

To ma być brutalny sposób? Masakra.... Poszukaj na forum o zamykaniu "opornych" procesów - deus kiedyś opisał fajny sposób, zaimplementuj to i wtedy będziesz mógł napisać "brutalne".
1:0 dla deus'a ;-)
lecimy dalej.....

Nie miałem okazji przetestować na wirusach.

Widać chociażby po bazie 'sygnatur'... i po tym, że mam kolekcję najpowszechniejszego malware'u ostatnich lat - skanowanie zajęło z pół godziny, nie znaleziono absolutnie nic.

Więc na czym testowałeś? Na "czystych" plikach? I co? Nic nie znalazł - zadziwiające..... Czy naprawde aż tak trudno jest złapać jakiegoś wirusa? Wyłącz wszystkie AV(oprócz swojego :P) i firewall'e i wejdź na pare stronek porno(najlepiej przez IE) i już gotowe. Wtedy będziesz miał szanse przestestować swojego AV w warunkach bojowych.

Nie wstydzę się tego, że mieszkam na wsi niedaleko Częstochowy.
A ja mieszkam w mieście, ktyóre niektórzy uważają za wieś. I co z tego? Czy to przekreśla moje szanse na zostanie programistą? Raczej nie.

  • a nawet prośby sugerujące zazdrość: "Prosze o udostępnienie kodu źródłowego programu, bo chciałem sobie napisać lepszy"

Pokaż im to:

CODE:0042378A @@FakeMemScan: 
CODE:0042378A                 mov     dx, 6           ; y
CODE:0042378E                 mov     ax, 1           ; x
CODE:00423792                 call    moveCursor
CODE:00423797                 push    1               ; dwMilliseconds
CODE:00423799                 call    Sleep
CODE:0042379E                 lea     edx, [ebp+newStr]
CODE:004237A4                 mov     eax, offset aSkanowaniePami ; "* Skanowanie pamięci procesów: "
CODE:004237A9                 call    _copystr
CODE:004237AE                 mov     edx, [ebp+newStr]
CODE:004237B4                 mov     eax, ds:stdout
CODE:004237B9                 call    _WriteString
CODE:004237BE                 mov     edx, ds:uFileNo
CODE:004237C4                 call    _WriteLong
CODE:004237C9                 mov     edx, offset sProcent ; " %"
CODE:004237CE                 call    _WriteString
CODE:004237D3                 call    System::__linkproc__ Flush(System::TTextRec &;)
CODE:004237D8                 call    System::__linkproc__ _IOTest(void)
CODE:004237DD                 inc     ds:uFileNo
CODE:004237E3                 cmp     ds:uFileNo, 101
CODE:004237EA                 jnz     short @@FakeMemScan
CODE:004237EC                 mov     eax, ds:stdout
CODE:004237F1                 mov     edx, offset aOk ; " OK"
CODE:004237F6                 call    _WriteString

i to:

Dawny licznik plików robi za licznik pętli, osobliwej pętli. Co milisekundę raczy użytkownika informacją o kolejnym procencie przeskanowania pamięci uruchomionych procesów... i nic poza tym. W ogóle takiego mechanizmu zaimplementowanego nie ma i patrząc na powyższe cuda wątpię aby autor był go w stanie napisać. Tak, licznik plików bo praktycznie cały skaner + wszystkie pozostałe opcje odpalane z linii poleceń są zaimplementowane jako jedna tylko funkcja. To chyba ochrona przed konkurencją.

Zapewniam, że Od razu zaprzestaną prób wyciągnięcia od Ciebie źródła.

Przejdźmy teraz do skuteczności wykrwania wirusów....

EICAR nie jest wirusem to po pierwsze.

A jakie warunki program musi spełnić, żeby został uzanny za wirusa? Format dysku, spalić płyte główną i co jeszcze?

deus napisał:

Wkurzają mnie niemiłosiernie ludzi nazywający siebie hakerami, specjalistami, chwalący się wszędzie ilością lat w branży, jeżeli coś faktycznie umie to jest to po prostu widać, inaczej przynosi wstyd tak sobie jak i tym, pod których się podszywa.
Mnie też. Specjalistą nie byłem, nie jestem, w najbliższym czasie nie zostane i nie chce żeby mój post był odebrany jako próba wywyższania się nad innych(także Noob Saibot'a). Koleś ma troche zawyżone mniemanie o sobie i swoim "dziele". Natomiast deus (nie pierwszy raz) pokazał kolesiowi gdzie jego miejsce w szeregu i, że duzo sie musi jeszcze nauczyć. I tego(i skromności) Mu(Noob Saibot) "życze".

PS
Co do cm wrzuconego przez deus'a - wczoraj na szybkości zrobiłem pierwszy "level" - całkiem prosty. Dzisiaj jak bede mial czas to wezme sie za drugi(i moze trzeci) zobaczymy co z tego wyjdzie. Ogólnie całkiem fajne cm.
BTW: Czym to jest spakowane?
</quote>

0

O, widzę, że ktoś wątek wyciągnął... Cóż, jestem dziś w dosyć samobójczym nastroju /co przedstawicielki płci pięknej robią z ludźmi.../, otworzyłem drugie piwo, w lodówce jeszcze trzy /formalnie nie piję.../, jedyne czego mi do 'szczęścia' brakuje to widok kodu tego pseudo-AV... ok, zaczynamy nasz teatrzyk, jest 19:41:38.

Cóż, heurystyka faktycznie nie istnieje - kolejne kłamstwo szanownego Pana Piotra Olszewskiego... ale to nieważne, jak wspomniałem - i tak jest to niemożliwe do zrealizowania przy aktualnym 'silniku' 'AV'.

Program faktycznie prawie oferuje ochronę w czasie rzeczywistym... do rzeczy.

Pierwszy grzech z 'monitora':

CODE:0048595E                 lea     edx, [ebp+sExeName]
CODE:00485961                 mov     eax, ds:Application
CODE:00485966                 mov     eax, [eax]
CODE:00485968                 call    ExeName
CODE:0048596D                 mov     eax, [ebp+sExeName]
CODE:00485970                 lea     edx, [ebp+sAPIHook]
CODE:00485973                 call    Sysutils::ExtractFilePath(System::AnsiString)
CODE:00485978                 lea     eax, [ebp+sAPIHook]
CODE:0048597B                 mov     edx, offset aApihook_dll_0 ; "APIHook.dll"
CODE:00485980                 call    System::__linkproc__ LStrCat(void)
CODE:00485985                 mov     eax, [ebp+sAPIHook]
CODE:00485988                 call    System::__linkproc__ LStrToPChar(System::AnsiString)
CODE:0048598D                 push    eax             ; lpLibFileName
CODE:0048598E                 call    LoadLibraryA
CODE:00485993                 mov     ebx, eax
CODE:00485995                 test    ebx, ebx
CODE:00485997                 jz      short @@return
CODE:00485999                 mov     ds:g_hAPIHook, ebx
CODE:0048599F                 push    offset aStarthook ; "StartHook"
CODE:004859A4                 push    ebx             ; hModule
CODE:004859A5                 call    GetProcAddress_0
CODE:004859AA                 mov     ds:g_StartHook, eax
CODE:004859AF                 call    ds:g_StartHook
CODE:004859B5 @@return:                               ; CODE XREF: RunRuntimeScaner+50j
CODE:004859B5                                         ; RunRuntimeScaner+8Bj
CODE:004859B5                 xor     eax, eax

Czyli mamy do czynienia z procedurą, nie funkcją, uruchamiającą ochronę w czasie rzeczywistym... która to, niezależnie czy wszystko przebiegło pomyślnie, siedzi cicho i udaje, że wszystko jest OK. Oczywiście jest to poważnym zagrożeniem dla użytkownika - w oknie programu AV będzie widoczne info, że strażnik jest aktywny ponieważ bazuje ono na obecności okna (?!) 'monitora AV' podczas gdy faktycznej, chociaż znikomej i nieskutecznej, ochrony nie ma. Skasowanie wspomnianego pliku dll jest praktycznie niezauważalne w programie, jego podmiana zaś całkowicie nie wpływa na informacje przedstawiane użytkownikowi... Jakim cudem jest jakaś różnica?

CODE:004858E4 sub_4858E4      proc near               ; CODE XREF: CODE:MPPopupp
CODE:004858E4                 cmp     ds:g_hAPIHook, 0
CODE:004858EB                 jnz     short loc_4858FB
CODE:004858ED                 xor     edx, edx
CODE:004858EF                 mov     eax, [eax+31Ch]
CODE:004858F5                 call    Menus::TMenuItem::SetChecked(bool)
CODE:004858FA                 retn
CODE:004858FB ; ---------------------------------------------------------------------------
CODE:004858FB loc_4858FB:                             ; CODE XREF: sub_4858E4+7j
CODE:004858FB                 mov     dl, 1
CODE:004858FD                 mov     eax, [eax+31Ch]
CODE:00485903                 call    Menus::TMenuItem::SetChecked(bool)
CODE:00485908                 retn
CODE:00485908 sub_4858E4      endp

Procka wywoływana przy wyświetleniu menu kontekstowego ikonki z tray'a - jeżeli dll'ka jest załadowana to znaczy, że skaner jest aktywny... nikt nie mówi, że ten moduł ma udostępniać procedury uruchomienia\zatrzymania ochrony aktywnej.

CODE:00488268 Stronaostatnichzagroe1Click proc near   ; DATA XREF: CODE:0048522Co
;...
CODE:00488287                 push    SW_SHOW         ; nShowCmd
CODE:00488289                 push    offset null_string ; lpDirectory
CODE:0048828E                 push    offset aNews_0  ; "/news"
CODE:00488293                 lea     edx, [ebp+_ExeName]
CODE:00488296                 mov     eax, ds:Application
CODE:0048829B                 mov     eax, [eax]
CODE:0048829D                 call    ExeName
CODE:004882A2                 mov     eax, [ebp+_ExeName]
CODE:004882A5                 call    System::__linkproc__ LStrToPChar(System::AnsiString)
CODE:004882AA                 push    eax             ; lpFile
CODE:004882AB                 push    offset aOpen_3  ; "open"
CODE:004882B0                 push    0               ; hwnd
CODE:004882B2                 call    ShellExecuteA

Nie ma to jak fork... odpalać samego siebie z innymi argumentami...
I coś, co powaliło mnie na kolana:

Welcome in system of automatic update, which will collect update of base require newest and software. It remember, that execute action it daily, in order to to have on currently newest update.

"Please, start up program for booting of new base of signature one more time."

Stawiam piwo /zostały jeszcze trzy/ każdemu, kto przetłumaczy to na język polski bez zająknięcia i zaglądania do wersji polskiej.

Dobra, słowo się rzekło, kobyłka u płota - czas na właściwą 'ochronę aktywną', szkoda mi miejsca i Waszego czasu na rozpisywanie się o kolejnych podobnych absurdach w innych modułach.

Dllki skanera są spakowane UPX-em, czyżby ochrona przed konkurencją? A może samym sobą? Tak się składa, że gdyby dllki były statycznie importowane i nie pociągnięte UPX-em to działyby się ładne cuda, ale o tym potem.

Zobaczmy jak wygląda StartHook i okolice:

text:0041B548 ; LRESULT __stdcall GetMsgProc(int code, WPARAM wParam, LPARAM lParam)
text:0041B548 GetMsgProc      proc near               ; DATA XREF: StartHook+8o
text:0041B548                 push    ebp
text:0041B549                 mov     ebp, esp
text:0041B54B                 xor     eax, eax
text:0041B54D                 pop     ebp
text:0041B54E                 retn    0Ch
text:0041B54E GetMsgProc      endp
text:0041B54E ; ---------------------------------------------------------------------------
text:0041B551                 align 4
text:0041B554 ; Exported entry   2. StartHook
text:0041B554 ; =============== S U B R O U T I N E =======================================
text:0041B554                 public StartHook
text:0041B554 StartHook       proc near
text:0041B554                 push    0               ; dwThreadId
text:0041B556                 mov     eax, ds:hModule
text:0041B55B                 push    eax             ; hmod
text:0041B55C                 mov     eax, offset GetMsgProc
text:0041B561                 push    eax             ; lpfn
text:0041B562                 push    WH_GETMESSAGE   ; idHook
text:0041B564                 call    SetWindowsHookExA
text:0041B569                 mov     ds:hhk, eax
text:0041B56E                 call    _APIScan_Initialize
text:0041B573                 retn
text:0041B573 StartHook       endp

Na pierwszy rzut oka osoby mające do czynienia z hookami widzą błąd. Jaki? Chwila dramatyzmu i czas na otwarcie trzeciego piwa...

MSDN w dokumetnacji argumentów napisał(a)

code
[in] Specifies whether the hook procedure must process the message. If code is HC_ACTION, the hook procedure must process the message. If code is less than zero, the hook procedure must pass the message to the CallNextHookEx function without further processing and should return the value returned by CallNextHookEx.

MSDN w dokumentacji SetWindowsHookEx napisał(a)

Calling the CallNextHookEx function to chain to the next hook procedure is optional, but it is highly recommended; otherwise, other applications that have installed hooks will not receive hook notifications and may behave incorrectly as a result. You should call CallNextHookEx unless you absolutely need to prevent the notification from being seen by other applications.

Mówiąc krótko 'AV' jest na najlepszej drodze do powodowania nieprawidłowego działania i niestabilności innego oprogramowania używającego tego rodzaju hooka oraz, w konsekwencji, utraty danych.

Źle? To jeszcze nic...

Streszczając obostrzenia hooków - globalny hook działa tylko na desktopie, na którym został założony, WH_GETMESSAGE zaś jest mapowany w proces i wywoływany dopiero przy wywołaniu przez dany proces funkcji GetMessage lub PeekMessage. Wnioski? Odpadają prawie wszystkie aplikacje konsolowe, programy posiadające wyłącznie okna dialogowe, wszystko co nie jest podpięte do aktualnego desktopu - wygaszacze, większość usług, programy odpalone przez szybkie przełączanie użytkowników itd. o sterownikach nawet nie wspominam.

Wiemy jak dostaje się w niektóre procesy, teraz zobaczymy co z nimi robi... może być ciekawie.

Ano, zaczyna od pobrania adresów funkcji ShellExecuteA, CreateProcessA, CreateProcessW, CreateFileA, CreateFileW i OpenFile. W jaki sposób? Nie, nie poprzez GetProcAddress czy parsowanie katalogu eksportów ale przez rozłożenie funkcji proxy z Delphi wywołujących dopiero importowane funkcje - wywołanie statycznie importowanej funkcji API to w rzeczywistości call do funkcji robiącej skok pod adres z tablicy importów, z tego właśnie adresu korzysta 'monitor'. Nie muszę mówić, że jest to bardzo mocno zależne od kompilatora i mogłoby mieć czasem dosyć przykre konsekwencje gdyby nie to, że jeżeli funkcja nie wykryje odpowiedniej formy skoku to zwraca otrzymany adres. Tą samą funkcją są też traktowane właściwe funkcje systemowe, nie wiem tylko po co.

Wiemy jakie funkcje interesują 'AV', czas zobaczyć w jaki sposób są hookowane. Funkcja wstawiająca hook otrzymuje na wstępie adres głównego modułu procesu i pustą listę wskaźników, do której wstawia adresy już obsłużonych modułów. Idąc dalej - funkcja ta odczytuje z nagłówka modułu adres katalogu importów /olewając przy okazji sprawdzenie wielu rzeczy i zrzucając to na handler łapiący wszystkie możliwe wyjątki - bardzo ciche, wydajne i profesjonalne rozwiązanie/. Następnie wywołuje siebie rekurencyjnie dla biblioteki znalezionej w importach. Gdyby nie sprawdzanie czy danego modułu już nie popsuto - możliwy byłby DoS poprzez importowanie z samego siebie. Kolejnym krokiem jest wyszukanie i podmiana adresu wskazanej funkcji w tablicy importów na adres hooka, wszystko fajnie tylko dlaczego funkcje z jednej biblioteki są wyszukiwane we wszystkich tablicach funkcji importwanych z różnych modułów? Chyba można przyjąć, że autor nie potrafi rozróżniać załadowanych bibliotek... Wstawienie nowych wpisów odbywa się poprzez WriteProcessMemory, co jest dosyć głośnym zachowaniem, 'konkurencyjne' programy antywirusowe analizując podejmowane przez moduł akcje mogłyby się, nie bez powodu, przyczepić... pojęcie analizy behawioralnej jest jak widać szanownemu Panu obce, inaczej nie pisałby bzdur o 'współpracy' z innymi AV.

Jakie z tego wynikają wnioski? Taka metoda hookowania pozwala monitorować tylko statycznie importowane funkcje ze statycznie importowanych przez główny program modułów oraz modułów importowanych przez nie na tych samych zasadach /rekurencja/. Ale czy jest tylko tak źle? Jak co bardziej obeznani i spostrzegawczy zapewne zauważyli - zdecydowana większość aplikacji na rynku jest potraktowana protectorami bądź packerami, w konsekwencji wpis w nagłówku modułu w pamięci wskazuje na importy packera /zwykle GetProcAddress, LoadLibrary i ew. VirualAlloc\VirtualFree/ - tablicę, która jest całkowicie bezużyteczna w momencie, gdy dociera do niej 'monitor'. Niektóre protectory w celu utrudnienia zrzucenia modułu z pamięci zamazują jego nagłówek lub wstawiają tam spreparowane dane - przy odrobinie szczęścia cały proces z winy 'ochrony' się wyłożyć może... niby jest tam obsługa wyjątków ale jest sposób na jej obejście, nawet przypadkowe. Następna sprawa to to, że protectory nie czekają z założonymi rękami na to aż ktoś im proces zmodyfikuje, w przypadku takiej ingerencji mogą podjąć odpowiednie akcje, czasem nieprzyjemne - znowu kłania się możliwość utraty danych przez użytkownika.

Podsumujmy czynniki wymagane aby w ogóle można było mówić o jakiejś formie ochrony:

  • program musi mieć co najwyżej takie same poświadczenia co anty wirus /nie działa jako usługa więc ma poświadczenia aktualnie zalogowanego użytkownika/;
  • proces musi posiadać normalną, aktywną pętlę komunikatów;
  • pętla komunikatów musi pracować w obrębie tego samego desktopu co AV /wygaszacze, procesy innych użytkowników, procesy odpalane zdalnie, większość usług itd. odpada/;
  • proces i importowane moduły nie mogą być spakowane\zabezpieczone;
  • biblioteki aby być chronione nie mogą być ładowane dynamicznie;
  • wspomniane funkcje muszą być aktywnie używane, co jest o tyle problematyczne, że jest sporo ich zamienników, do tego żyjemy w czasach Windows NT, którego to komponenty wewnętrznie używają Native API, WINAPI to tylko nakładka - powłoka systemowa i większość mechanizmów samego systemu po prostu chroniona nie będzie.
    Tak się składa, że kompresja i zabezpieczanie oprogramowanie jest powszechną praktyką /sam 'AV' ma skompresowane dll'ki/.... szczególnie w przypadku archiwizerów, komunikatorów czy przeglądarek - te aplikcje chronione nie będą... Z używanych przeze mnie w tym momencie chyba tylko FasmW spełnia wszystkie wymagania, kompilacja prostego exploita trwa tyle co średniego projektu w VC++... jakiego exploita? To za chwilę.

Kolejna sprawa to to, że hooki funkcji nie sprawdzają poprawności argumentów, w momencie gdy oryginalne API zwróci kod błędu - z powodu ingerencji 'AV' poleci wyjątek, kolejny sposób zwiększenia podatności programów na błędy i utratę danych. Program, który normalnie radzi sobie z błędami może po prostu stracić taką możliwość... Najlepszy kfiatek w hookach? Chyba obsługa CreateFile. W przypadku gdy znaleziono infekcję w pliku, który próbowano otworzyć - hook zwraca 0. Co w tym złego? To cholernie poważny błąd - w przypadku błędu otwarcia funkcja jest zobowiązana zwracać -1 czyli INVALID_HANDLE_VALUE i ustawić odtpowiednio last error ew. 'AV' powinien pozbyć się viri i pozwolić na próbę otwarcia nieistniejącego /co jak pokazałem wcześniej nie jest takie pewnie/ pliku i zrobienia przez oryginalną funkcje co trzeba.... czyli mamy metodę wykrycia obecności AV bez sprawdzania adresów, wyszukiwania okien czy inszych takich. Aktualnie wyszukiwanie okien na pulpicie lodówki zwraca jedną butelkę piwa, zuo. Co złego w wartości zwracanej przez 'AV'? To, że chyba wszystkie programy jakie widziałem robiły /w tym klamoty Microsoftu/ robiły podręcznikowy test na INVALID_HANDLE_VALUE, co ZNOWU może prowadzić do nieokreślonego zachowania aplikacji, niestabilności i utraty danych.

Hm, wspomniałem coś o exploicie? Na to wygląda, czas na małą retrospekcję i konfrontację z 'ofertą' Pana Olszewskiego:

Nowy unikalny anty wirus, którego głównym zadaniem jest ochrona komputera przed różnymi rodzajami infekcji takimi jak:

  • Wirusy
  • Robaki
    - Konie trojańskie
  • Rootkity
  • Stealwary
  • KeyLoggery
  • Spyware
    oraz innego rodzaju zagrożenia komputerowe między innymi oszukane pliki z pułapkami zastawionymi przez hakerów lub organizacje antypirackie, następnie exploity lokalne zagrażające bezpieczeństwu lokalnemu komputerowi oraz wiele innych rodzajów szkodników o których świat zapomina.

Exploity lokalne? WTF? Ale OK, postawimy odpowiednio spreparowaną stronę na localu :> Posłużymy się też jednym z jakże grzecznie dostarczonych przez autora trojanów /pomijam, że część plików z paczki to w rzeczywistości różne egzemplarze tego samego malware'u (!)/. Zamiast nudnego, teoretycznego opisu opowiemy sobie teraz historię małego eksperymentu... miejsce akcji:

  • VM z udostępnionym przez Microsoft obrazem;
  • ukochaną, wbudowaną, przeglądarką większości użytkowników tego systemu;
  • udostępniamy dwie kopie trojana programowi, jedną bezpośrednio, drugą za pomocą odpowiednio spreparowanej strony strony;
    akcja:
  • piszemy exploita na jedną z wielu znanych luk pozwalających na zdalne wykonywanie kodu, korzystając jednocześnie ze statycznie importowanych przez nią chronionych funkcji - tylko takiego exploita mógłby w końcu ten 'AV' monitorować... a większość exploitów sama dba o zapewnienie sobie dostępu do funkcji systemowych;
  • staramy się /z powodzeniem/ aby 'monitor AV' zajął się zabezpieczeniem procesu;
  • przeprowadzamy kontrolne skanowanie bezpośrednio udostępnionego trojana w celu upewnienia się, że jest on wykrywany;
  • podpinany debugger + log breakpoint lub też dowolny monitor API do przeglądarki w celu monitorowania działań exploita;
  • oook, czas na prawdziwą akcję - wchodzimy na stronę wykorzystującą podatność przeglądarki;
  • Przyznam się szczerze, że z wielką przyjemnością obserwowałem jak skaner /tak, upewniłem się, że plik przez hooki przechodzi/ z równie wielką przyjemnością uznaje zapisany właśnie na dysku i uruchamiany program za bezpieczny... żegnaj czysty systemie.

Dlaczego autor to, nie bójmy się użyć tego słowa, idiota? Zobaczmy co siedzi w funkcji, przez którą wszystkie hooki wysyłają pliki do skanowania:

text:0041A56F                 mov     eax, ds:g_LastScannedFile
text:0041A574                 mov     edx, [ebp+FileToScan]
text:0041A577                 call    System::__linkproc__ LStrCmp(void)
text:0041A57C                 jz      @@return
text:0041A582                 mov     eax, offset g_LastScannedFile
text:0041A587                 mov     edx, [ebp+FileToScan]
text:0041A58A                 call    System::__linkproc__ LStrAsg(void *,void *)

Cóż, na wstępie sprawdzane jest czy skanowany plik nazywa się tak samo jak ostatnio skanowany - jeżeli tak to jest pomijany... jakby tego było mało - funckcja ScanFile /z 'sąsiedniego' modułu/ jest po prostu kopią omówionej wcześniej funkcji skanującej z wyciętymi komunikatami itd. - nadal za każdym razem ładuje bazę z dysku, gdyby nie t0, że system Windows ładnie cache'uje pliki to wydajność byłaby zdecydowanie mniejsza. Przypomnijmy sobie co napisał autor:

  • małe obciążenie systemu

Tak... trzeba być idiotą żeby nie widzieć konsekwencji takiej 'optymalizacji'.

  1. A to dziwne z tym pustym plikiem, ponieważ programowo pliki o rozmiarze 0 nie są skanowane.

i kolejny powód do nazwania gościa idiotą... szczególnie, że ten moduł skanera nie jest nowy, pochodzi z jeszcze wcześniejszych wersji.

OK, teraz wyjaśnienie całej zabawy - 'monitor' nie sprawdza czy plik istnieje, robi to dopiero właściwy 'skaner'. Ale to jeszcze nic, najważniejszy jest pokazany mały fragment kodu - plik, który trafia do funkcji nie musi istnieć aby zostać zapamiętany jako ostatnio skanowany. Nie są też sprawdzane\monitorowane ew. zmiany w pliku. Co to oznacza dla nas? Ten 'anty wirus' to idealny wręcz rootkit ukrywający malware przed samym sobą.

Praktyczne spojrzenie ze strony exploita: exploit tworzy\otwiera plik w celu zapisania w nim pobranego malware'u, podejmowana jest w momencie otwarcia próba skanowania i zapamiętywany jest ostatnio skanowany plik /niezależnie od zawartości i tego czy istnieje/. Szkodliwy kod jest zapisywany do pliku. Następuje monitorowane /jeżeli ma się ogromne szczęście/ jest uruchomienie pobranego programu. Co na to monitor? Ano...

...dochodzi do wniosku, że plik musi być bezpieczny skoro poprzednio trafił do funkcji wysyłającej plik do skanowania /obojętne czy do skanowania doszło, czy usunięcie viri się powiodło itd./ i pozwala na dalsze operacje na nim, w tym uruchomienie. Przyznam się, że eksperyment przeprowadziłem dla sadystycznej wręcz przyjemności, to samo przecież tyczy się znacznie prostszych dropperów i innych takich zabawek, samo w sobie jest oczywiste i deterministyczne.

W przypadku dosyć wyjątkowego exploita, którego akcje 'anty wirus' w ogóle jest w stanie monitorować - szkodliwy kod ma wolną rękę, mimo iż w ręcznie odpalonym skanowaniu pobrany plik zostałby rozpoznany jako niebezpieczny. Tak, 'AV' mimo 'poprawnie' działającej 'ochrony' sam przed sobą ukrywa instalację i uruchomienie niebezpiecznego kodu z racji zmniejszenia zużycia zasobów systemowych. Moduł jest stary, ma ponad rok, jest wyraźnie pisany na zasadzie 'naklep i zapomnij, jak się pie***y to dodaj jeszcze jeden handler wyjątków'.

Podsumowując - ochrona aktywna praktycznie nie istnieje, w przypadku procesów, dla których w ogóle jest w stanie zaistnieć powoduje zdecydowane podniesienie podatności na błędy. W moim wypadku ochrona tyczyła się ~7% procesów i 23% załadowanych w nich bibliotek, doprowadzając jednocześnie do zwiększenia liczby rzucanych wyjątków.

Ja poświęciłem temu projektowi dopiero 3 lata [...]

Chcesz powiedzieć, że gość ze zdecydowanie większym /teoretycznie/ doświadczeniem niż ja czy osoby znane, faktycznie pracujące w branży przez co najmniej 1/3 rozwoju programu nie zauważył tak wysoce krytycznej luki? Wybacz kochany ale ja, jak i wielu bardziej zaawansowanych użytkowników tego forum w 3 godziny w Emacs Lispie napiszę moduł do emacs-a /w nim postawał ten post/ o funkcjonalności zbliżonej do ClamAVa i zdolny do korzystania z jego sygnatur. Jeżeli przez 3 lata dorobiłeś się mniej niż tysiąca linii kodu /bo tyle szacunkowo w Delphi zajmuje ten projekt/ i takiej 'funkcjonalności to kiepsko o Tobie świadczy. Wspomniany moduł będzie mieć zdecydowanie większą skuteczność i możliwość rozbudowy - Ty zaś jesteś całkowicie bezsilny w przypadku rekompilacji, spakowania lub MINIMALNEJ modyfikacji pliku.

break, czas zredukować listę pełnych butelek do nila...

Jaki koń jest - każdy widzi. Jak dla mnie to autor powinien albo skończyć w rzeźni albo zmienić nazwisko bo po tym jak zaczął nagłaśniać swoje 'dzieło' NIGDY nie dostanie roboty w branży AV, przynajmniej oficjalnie. Do nieoficjalnego zatrudnienia zaś wymagane byłyby nadzwyczajne wręcz umiejętności, oczywiście mówimy o sytuacji teoretyczniej, oficjalnie nie wiem o takich sytuacjach.

Podsumowanie 'strażnika' - stwarza bardziej realne zagrożenie dla użytkownika niż oferuje ochronę, na to zaś ani jeden program działający w intersie ochrony użytkownika nie może sobie pozwolić.

OK, czas powoli kończyć... w życiu tyle piwa nie wypiłem, pytanie z czy z jej czy też Pana Piotra powodu. Odniosę się do licencji może jeszcze. Ciekawe, że instalator zawiera inną licencję niż sam program, zaś wersje językowe różnią się zapisami. Następna sprawa - stare wersje programu nie mają dołączonej licencji /mówię tu o starym 'skanerze' konsolowym, pełny 'AV' to w ogóle 404/, stąd wątpliwy zapis licencji o jej zmianie jest raczej bezprawny biorąc pod uwagę zasadę Lex severior retro non agit. Autor łamie licencję w co najmniej dwóch punktach co jest powodem do jej wypowiedzenia, mimo jej akceptowania - nakaz usunięcia obejmuje zaś wyłącznie złamanie\nie zgodzenie się z licencją. Do tego tez informacje podane przy samej rejestracji domeny są fałszywe - kolejny przykład łamania prawa, powszechność łamania prawa nie jest przyzwoleniem. Wedle licencji program jest freeware, więc co do diabła w oknie nowości o zagrożeniach robi AdSense?!

Pozwoliłem sobie przedstawić tylko najważniejsze\najgłupsze kfiatki w kodzie na jakie trafiłem od rozpoczęcia pisania tego postu, pozostałe pominąłem. Pominąłem też prezentację innej, potencjalnie krytycznej luki, exploitowanie tego 'AV' to sztuka dla sztuki - jedyny realny zysk to kolejna kompromitacja Pana Olszewskiego.

Co do moich działań - działam na prośbę potencjalnych użytkowników tego oto programu, demaskowanie działania na szkodę użytkownika z punktu widzenia prawa mozna podciągnąć pod wyższą konieczność - szczerze odradzam Panu Piotrowi próbę pozywania mnie za łamanie licencji, którą i tak wypowiedziałem. Moim celem w tym momencie jest wykazanie tego, jakim oszustem jest autor wspomnianego programu w celu uchronienia potencjalnych użytkowników przed potencjalnie szkodliwym działaniem wyżej wymienionego oprogramowania, prywatnie zaś sprawia mi to sporą przyjemność - doskonale wiem, że do pracy w branży AV jestem za kiepski, demaskowanie oszustów uważających się za lepszych i nazywających siebie hakerami to przyjemność jakich mało.

Podsumowanie wniosków i podsumowań: program ten działa ewidentnie na szkodę użytkownika, jego autor zaś w wielu miejscach łamie prawo.

[...] nie zrezygnuje z nigo za żadne skarby.

pozwolę sobie zadedykować Panu /po lekturze postów z tego wątku/ fragment jednego z dwóch utworów Metalliki, które toleruję /aktualnie słucham i pogrywałem w przerwach podczas pisania tego postu/:

...it's too late. Now I can't think, think why I should even try.

Niektórzy z Was pewnie jeszcze nie dorośli, żeby żyć samodzielnie i zrozumieć inną osobą.

Ach, Ach, powiedział ten, który dorósł do zrozumienia dramatu osób, które mu zaufały i straciły przez to cenne dane.

Chciałem dodać, że naprawdę nie przejmuje się Waszymi negatywnymi opiniami na temat jednego z moich programów oraz opinią o mnie.

Konia z rzędem temu, kto nie chce zdemaskowania pozostałych oszustw Pana Olszewskiego, jego działania mogą w prostej linii prowadzić nawet do wyroku, opinią potencjalnego klienta\pracodawcy tym spowodowaną może zacznie się przejmować. Cóż, aktualnie nie stać mnie na dokładne zapoznanie się z sytuacją Pana Olszewskiego i jakością jego oprogramowania, muszę zarabiać na życie i wywiązywać się ze zobowiązań i licencji... widziałem też w przypadku innego z jego programów informację o ochronie przed atakami typu DDoS - zabawne, że kluczowe dla działania internetu serwery nie sa nia nie odporne co w ostatnich latach wielokrotnie udowadniano.

Tyle na ten temat, czas wywalić to adware z dysku i zrobić jeszcze coś...
Kilka osób sugerowało aby streścić analizę tego programu i wrzucić na thedailywtf.com.. coż, pomysł nie wydaje się taki zły [diabel] Co by tu jeszcze... a, dziękuję odpowiednim osobom za zainteresowanie mnie tym 'cudem' techniki.

Pięć godzin... tylko tyle starczyło aby ponownie pogrążyć Pana Olszewskiego, co to jest w porównaniu do trzech lat?

Pozowoliłem sobie cofnąć decyzję Faszcza o umieszczeniu wątku w perełkach, sprawa jest nie tyle śmieszna co poważna - program ten stanowi realne zagraożenie dla jego użytkowników.

0
  1. Pan Olszewski chyba się już tutaj nie pojawi... Po takiej litani ciężko będzie mu się podnieść. Ma za swoje [diabel] Mamy z nim spokój na dłuższy czas...

  2. Właśnie (chyba - ale o tym za chwile)skończyłem cm zamieszczone przez deus'a. Całkiem proste(tylko czemu zajęło mi tyle czasu? :-/ ) :) Odp:
    1,2: CENZURA :P
    3: Gdzie jest level 3? 1 i 2 poszły wmiare szybko no i po wpisaniu dobrego hasła w 2 na górze pojawia się napisa "stage 3" i tyle.... Coś źle zrobiłem, levelu trzeciego nie ma i koniec, rozwiązaniem jest string "cenzura" czy o co chodzi? Deus mógłbyś mnie oświecić w tej kwesti?

//edit: Wywaliłem odpowiedzi.

0

Cytat ze strony firmowej antywirusa:

Nie jest to nasz błąd, że AVAST wykrywa naszego strażnika jako robaka internetowego - to się nazywa "konkurencja", która już na początku wyjścia wersji v0.3 próbowali nas "zniszczyć"

deus ma rację - tacy ludzie są niebezpieczni.

Ale interesuje mnie jedno: jak w Polsce wygląda odpowiedzialność prawna za wypuszczony program? Czy np. jeśli ten hakerski program ściągnę, zainstaluję i stracę dane miałbym szanse wygrać w sądzie z "producentem" - powiedzmy, że jako dokumentację dla sądu dołączam zrzut strony z obietnicami działania programu oraz analizę wykonaną przez specjalistę (vide posty deus'a).

1 użytkowników online, w tym zalogowanych: 0, gości: 1