TOR на Ubuntu (заметка)

| Январь 2nd, 2011

https://addons.mozilla.org/firefox/2275/ — Torbutton Fx

1
2
3
4
5
6
7
8
#!/bin/sh
echo "deb http://deb.torproject.org/torproject.org maverick main" >> /etc/apt/sources.list
gpg --keyserver keys.gnupg.net --recv 886DDD89
gpg --export A3C4F0F979CAA22CDBA8F512EE8CBC9E886DDD89 | sudo apt-key add -
sudo apt-get update && sudo apt-get install privoxy tor tor-geoipdb
echo "forward-socks4a / 127.0.0.1:9050 ." >> /etc/privoxy/config
/etc/init.d/tor start
/etc/init.d/privoxy start

Немного проанализировав метрику Яндекса, увидел заходы на сайт в выдачи о примере отправки POST-запроса, реализованного на Python’e.
Поэтому решил немного переделать этот пример реализации сокетов на python. В заголовке POST запроса написал только необходимый минимум, без учета кукисов и юзерагентов etc.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#!/usr/bin/env python
'''
post_socket.py.py
author: Dominus
site: http://k0derz.ru/
'''

import socket, sys

def main():
if len(sys.argv) < 4:
print "Usage: python post_socket.py server port data=test"
sys.exit(1);
HOST = sys.argv[1]      # server adress
PORT = int(sys.argv[2]) # server port
DATA_POST = sys.argv[3] # POST data
DATA_LEN  = str(len(DATA_POST))

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # init TCP socket type
s.connect((HOST, PORT))
s.send("POST /search.php HTTP/1.1\r\nHost: "+ HOST +"\r\nContent-Type: application/x-www-form-urlencoded\r\nContent-Length: "+ DATA_LEN +"\r\n\r\n" + DATA_POST) # send DATA to server
data = s.recv(1024)  # recieve info
s.close()
rsp = repr(data)
print rsp

if __name__ == "__main__":
main()

credit_card
На многих сайтах-сервисах, осуществляющих вывод WM на банковскую карту, допущена ошибка о количестве допустимых оставляемых символах на фотокопии карты.

Необходимо оставить минимум 6 цифр в начале и 4 в конце номера карты, иначе карта не пройдет валидацию.

Python: MRA — Mail.ru Agent (SMS)

| Ноябрь 12th, 2010

Решил немного потренироваться в создании пакетов и разборов дампов, выбрал для этого MRA в качестве исследуемого и Python как язык для реализации задуманного.
Хочу сразу уточнить, что ответ сервера при отправки SMS был выбран методом тыка, потому что у меня нет под рукой нативного клиента, который мог бы отправить СМСку.
Основные моменты описаны в коде, оптимизировать ф-ции в коде не стал, т.к. так более наглядней и можно просмотреть все этапы создания пакета для отправки.
В роле снифера выступал wireshark.
Буду очень благодарен за дампы с ответами после отправки SMS.(успешной и нет)
more »

Для примера взял получения информации о сервере Counter-Strike, а именно имя сервера и текущую карту. Соединение происходит по протоколу UDP, затем распарсиваем полученные данные и выводим на экран.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#!/usr/bin/env python
'''
cs_client.py
author: Dominus
site: http://k0derz.ru/
'''

import socket, string, sys

def main():    
    if len(sys.argv) < 3:
        print "Usage: python cs_client.py server port"
        sys.exit(1);
    HOST = sys.argv[1]          # server adress
    PORT = int(sys.argv[2]) # server port
   
    s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) # init UDP socket type
    s.connect((HOST, PORT))
    s.send("\xFF\xFF\xFF\xFFTSource Engine Query\x00")   # send INFO request to CS-server
    data = s.recv(1024)  # recieve info
    s.close()
    rsp = repr(data).split("\\x00")
    print "Server name:", rsp[1]
    print "Server map:",  rsp[2]

if __name__ == "__main__":
    main()

Firesheep: Firefox addon

| Октябрь 29th, 2010
firesheep

firesheep

Firesheep дополнение к Firefox, которое перехватывает сессии(cookies) пользователей в открытых Wi-Fi сетях, если используется подключение по HTTP без использования SSL соединения.
В дополнения включен перехват сессий из популярных социальных сетей и сервисов, таких как: Vkontakte, Flickr, FaceBook, Twitter, Amazon, Dropbox и т.д.
В архиве выкладываю исходный код версии для Linux-x86. Для пользователей Windows и MacOS уже есть рабочий вариант дополнения здесь (пользователи windows сразу должны установить WinPcap).
Для компиляции необходимо наличие установленных библиотек xulrunner.

1
sudo apt-get install xulrunner-dev

.
Компиляция:

1
2
//ваша версия xulrunner может отличаться, следует поправить под свою версию путь
./autogen.sh --with-xulrunner-sdk=/usr/lib/xulrunner-devel-1.9.2.12 &amp;&amp; CPATH=/usr/include/nspr make

После сборки проекта, аддон для Firefox будет находиться в директории build под названием firesheep.xpi, для его установки достаточно «закинуть» файл в окно Firefox, потом перезапустить последний.
Перед первым запуском firesheep, следует дать определенные права файлу.

1
2
cd ~/.mozilla/firefox/YOUR_PROFILE_ID.default/extensions/firesheep@codebutler.com/platform/Linux_x86-gcc3/
sudo ./firesheep-backend --fix-permissions

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

Firesheep Linux-x86 (source code) Скачать
Firesheep готовый аддон для Linux-x86 Скачать

Linux: Opera Passwords Recovery

| Октябрь 28th, 2010

Пароли в Opara лежат в файле wand.dat, который расположен в директории ~/.opera/. Немного полазив по сайтам сделал собирательный пример выуживания паролей. В основе пример из этой статьи, 2005 года еще, http://www.reteam.org/blog/archives/00000012.htm. Причина написания поста, в том, что софт который есть в сети, почему-то, стоит денег, многие некорректно декриптуют содержимое, и так, ближе к теме:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
// sna@reteam.org  - 6th of April 2005
// unwand.cpp //
#include <iostream>
#include <string.h>

#include <openssl/md5.h>
#include <openssl/des.h>


const unsigned char opera_salt[11] =
{
    0x83, 0x7D, 0xFC, 0x0F, 0x8E, 0xB3, 0xE8, 0x69, 0x73, 0xAF, 0xFF
};

int main(int argc, char **argv)
{
    if(argc != 2)
    {
        std::cout << "Usage: unwand <opera wand file>" << std::endl;
        return 1;
    }

    FILE *fdWand = fopen(argv[1], "rb");

    if(NULL == fdWand)
    {
        perror("Failed to open file");
        return 1;
    }

    fseek(fdWand, 0, SEEK_END);
    unsigned long fileSize = ftell(fdWand);

    unsigned char *wandData = (unsigned char *)malloc(fileSize);

    if(NULL == wandData)
    {
        fclose(fdWand);
        perror("Memory allocation failed");
        return 1;
    }

    rewind(fdWand);
    fread(wandData, fileSize, 1, fdWand);
    fclose(fdWand);

    unsigned long wandOffset = 0;

    //
    // main loop, find and process encrypted blocks
    //

    while(wandOffset < fileSize)
    {
        // find key length field at start of block
        unsigned char *wandKey = (unsigned char *)
            memchr(wandData + wandOffset, DES_KEY_SZ, fileSize - wandOffset);

        if(NULL == wandKey)
        {
            break;
        }

        wandOffset = ++wandKey - wandData;
        // create pointers to length fields
        unsigned char *blockLengthPtr = wandKey - 8;
        unsigned char *dataLengthPtr = wandKey + DES_KEY_SZ;

        if(blockLengthPtr < wandData || dataLengthPtr > wandData + fileSize)
        {
            continue;
        }

        // convert big-endian numbers to native
        unsigned long
            blockLength  = *blockLengthPtr++ << 24;
            blockLength |= *blockLengthPtr++ << 16;
            blockLength |= *blockLengthPtr++ <<  8;
            blockLength |= *blockLengthPtr;

        unsigned long
            dataLength  = *dataLengthPtr++ << 24;
            dataLength |= *dataLengthPtr++ << 16;
            dataLength |= *dataLengthPtr++ <<  8;
            dataLength |= *dataLengthPtr;

        // as discussed in the article
        if(blockLength != dataLength + DES_KEY_SZ + 4 + 4)
        {
            continue;
        }

        // perform basic sanity checks on data length
        if(dataLength > fileSize - (wandOffset + DES_KEY_SZ + 4)
            || dataLength < 8 || dataLength % 8 != 0)
        {
            continue;
        }

        unsigned char
            hashSignature1[MD5_DIGEST_LENGTH],
            hashSignature2[MD5_DIGEST_LENGTH],
            tmpBuffer[512];

        //
        // hashing of (salt, key), (hash, salt, key)
        //

        memcpy(tmpBuffer, opera_salt, sizeof(opera_salt));
        memcpy(tmpBuffer + sizeof(opera_salt), wandKey, DES_KEY_SZ);

        MD5(tmpBuffer, sizeof(opera_salt) + DES_KEY_SZ, hashSignature1);

        memcpy(tmpBuffer, hashSignature1, sizeof(hashSignature1));
        memcpy(tmpBuffer + sizeof(hashSignature1),
            opera_salt, sizeof(opera_salt));

        memcpy(tmpBuffer + sizeof(hashSignature1) +
            sizeof(opera_salt), wandKey, DES_KEY_SZ);

        MD5(tmpBuffer, sizeof(hashSignature1) +
            sizeof(opera_salt) + DES_KEY_SZ, hashSignature2);

        //
        // schedule keys. key material from hashes
        //

        DES_key_schedule key_schedule1, key_schedule2, key_schedule3;

        DES_set_key_unchecked((const_DES_cblock *)&hashSignature1[0],
            &key_schedule1);

        DES_set_key_unchecked((const_DES_cblock *)&hashSignature1[8],
            &key_schedule2);

        DES_set_key_unchecked((const_DES_cblock *)&hashSignature2[0],
            &key_schedule3);

        DES_cblock iVector;
        memcpy(iVector, &hashSignature2[8], sizeof(DES_cblock));

        unsigned char *cryptoData = wandKey + DES_KEY_SZ + 4;

        //
        // decrypt wand data in place using 3DES-CBC
        //

        DES_ede3_cbc_encrypt(cryptoData, cryptoData, dataLength,
            &key_schedule1, &key_schedule2, &key_schedule3, &iVector, 0);

        if(0x00 == *cryptoData || 0x08 == *cryptoData)
        {
            std::wcout << L"<null>" << std::endl;
        }
        else
        {
            // remove padding (data padded up to next block)
            unsigned char *padding = cryptoData + dataLength - 1;
            memset(padding - (*padding - 1), 0x00, *padding);
                    //uncomment if Windows platform
            //std::wcout << (wchar_t *)cryptoData << std::endl;
           
            // dump byte-aligned data[dataLength] little endian UTF-16 as UTF-8. (c) Madhu
            for (unsigned int i = 0; i < dataLength; i+=2) {
                int uch = cryptoData[i];
                uch = uch | cryptoData[i+1];
                if (uch == 0) break;
                if (uch > 0x7FF)
                    std::cout << (unsigned char) (((uch >> 12) & 0xF) | 0xE0)
                            << (unsigned char) (((uch >> 6) & 0x3F) | 0x80)
                            << (unsigned char) ((uch & 0x3F) | 0x80);
                else if (uch > 0x7F)
                    std::cout << (unsigned char) (((uch >> 6) & 0x1F) | 0xC0)
                            << (unsigned char) ((uch & 0x3F) | 0x80);
                else std::cout << (unsigned char) uch;             
            }                      
        }
        std::cout << std::endl;;
        wandOffset = wandOffset + DES_KEY_SZ + 4 + dataLength;
    }

    free(wandData);
    return 0;
}

Компиляция:

1
g++ -Wall -o unwand -lssl unwand.cpp

Запуск программы:

1
./unwand ~/.opera/wand.dat

Hotot: twitter client

| Октябрь 15th, 2010
hotot

hotot

Долго примерялся к различным twitter-клиентам на ubuntu/linux, но все были монстрами, тяжелыми и набитыми различной чепухой. Некоторое время, продолжительное, пользовался обычным джаббером для постинга твиттов, но иногда хочется ведь и изображение запостить.
Так вот, попробовал клиент который еще в пелёнках ходит, под названием Hotot. И уже с месяц только ним и пользуюсь. Что же он умеет:
1) поддержка плагинов (уже имеются в наличии: загрузка изображений на сервисы твиттера и стороние, вывод геолокации в твиттах, встроенных переводчик завязаный на Google Translate, превью изображений прямо в твитт-ленте)
2) висеть в трее )
3) разбит на следующие разделы: лента твиттов ваших подписок, лента твиттов адресованных вам, личные сообщения, избранные твитты, ретвитты, поиск пользователя и обычный поиск.
4) работает как через ввод логина/пароля так и через OAuth API
5) поддержку прокси сервера (http-proxy, socks4|5 proxy)
6) написан на python (плагины на javascript с возможностью дополнять своими)

На данный момент последняя версия 0.9.5 под кодовым именем Ada. В которой также появилось возможность использовать сервис identica.

Теперь о том где взять клиент:
1) добавив репозиторий

1
2
3
sudo add-apt-repository ppa:hotot-team
sudo apt-get update
sudo apt-get install hotot

2) из сорсов:

1
2
3
4
hg clone https://hotot.googlecode.com/hg/ hotot
cd hotot/
python ./hotot/hotot.py // если просто хотите запустить и посмотреть
./setup.py build &amp;&amp; sudo ./setup.py install --install-layout deb // если решили установить

Сайт проекта http://hotot.org/

MPAA under Ddos by Anonymous

| Сентябрь 21st, 2010
mpaa_ddos

mpaa_ddos

Сегодня, в 23:00 по МСК состоится очередная Ddos атака на сервер mpaa.org
Основная информация на агит-плакате + ссылка на софт http://sourceforge.net/projects/loic/ и время обратного отсчета http://pastehtml.com/view/1b4j6dg.html с кратким FAQ.

P.S. В данные момент идет распределенная атака на сервер aiplex.com, последний не выдержал нагрузки и мирно отдыхает.

UDP: атака «успешно» провалилась, MPAA выстоял.

UPD: 23.09.2010 22:30 UTC новый агит-плакат от Анонимуса с новой целью acs-law.org.uk (которая уже почему-то лежит раньше времени)

acs-law.org.uk

acs-law.org.uk

Aircrack now with WPA migration mode

| Сентябрь 18th, 2010
aireplay_ng

aireplay_ng

Сегодня разработчики выпустили новую ревизию Aircrack в которой добавили новый модуль — WPA migration mode.
Модуль предназначен для атак на точки доступа WiFi с функцией WPA migration mode, которая предназначена для авторизации
пользователей как с включенным WPA так и без него.
Обновленную версию можно скачать и установить с SVN:

1
2
3
4
svn co http://trac.aircrack-ng.org/svn/trunk aircrack-ng
cd aircrack-ng
make
make install

Для проверки и скачиваний обновлений в дальнейшем достаточно будет воспользоваться командой из директории программы:

1
svn up

Screenshots of Metasploit on iPhone

| Сентябрь 18th, 2010

HD More опубликовал скрины, web-интерфейса Metasploit Pro под iPhone.

metasploit_iPhone

metasploit_iPhone

Gammu + Bluetooth

| Август 13th, 2010

Gammu — софт для работы с телефоном (синхронизация, бэкап данных, доступ к камере телефона, радио и т.д.)
Для получения свежих версий ПО советую добавить репозиторий разработчика:

1
2
deb http://ppa.launchpad.net/nijel/ppa/ubuntu lucid main
deb-src http://ppa.launchpad.net/nijel/ppa/ubuntu lucid main

В моем случае это версия Ubuntu 10.04 — Lucid. (меняете на свою).
Приведу пример конфига gammu при подключении по bluetooth (тип соединения Serial Port): more »

Страница 2 из 1012345...8910...Последняя »