IT&보안151 레지스트리를 이용한 악성코드 숨기기 1. Windows 레지스트리 1) 악성코드가 이용하는 Windows 레지스트리정보 이렇게만 하면 눈에 들어오지 않으니 직접 해볼까요? 그 전에 RTLO라는 것이 있습니다. (Right To Left Override) 말 그대로 오른쪽에서 왼쪽으로 읽는 것입니다. ??????????????????????? [Windows + R] - char U+202E : Right-To-Left Override 이 문자표를 키고 U+202E를 선택한 후 [Ctrl+V]를 누르면 그 뒤부터는 오른쪽부터 읽지요. 직접해볼까요? [영상1] RTLO + 파일 숨기기(배치) 2019. 9. 15. 운영체제와 관련된 명령어 모음 1. Linux에서 32비트인지 64비트인지 확인하는 명령어 1) getconf LONG_BIT 2) arch 3) uname -m 4) lscpu | grep Arch 2. Windows에서 32비트인지 64비트인지 확인하는 명령어 1) echo %PROCESSOR_ARCHITECTURE% 2) systeminfo | findstr based 3) wmic os get osarchitecture 3. 윈도우 계정 1) 일반사용자 계정 조회 명령어 ▶ net users 2) 관리자 그룹 계정 조회 명령어 ▶ net localgroup administrators 3) 사용자 계정 정보 보기 ▶ net user "계정아이디" 4) 사용자 계정 추가 ▶ net users [사용자ID] [사용자password].. 2019. 9. 15. 팀프로젝트 간 갈등 어디에 가든 팀단위로 프로젝트를 하게 되겠죠? 단단한 팀을 만들고 싶지 않으신가요? 나도 내 생각도.. 마음도.. 모르는데!! 그러는데!! 어떻게 다른사람의 생각을 읽을 수가 있을까요? 몇 십년간 다르게 살아왔는데 어떻게 생각이 같을까요? 팀 내에서 의견이 서로 다를 수도 있지요. 미움받을까 걱정돼서 가만히 있는 것보다 소통을 하면서 서로의 생각을 이해하고 조율해 나가는 것이 팀의 관점으로 볼 때 좋답니다. 가만히 있다보면 말하는 법을 잊어버리게되고 쌓이다보면 화로 터지게 되겠죠? 봐도 비디오 안봐도 비디오.. 좋은결과는 아닐거라고 보이네요 정말로 단단한 팀은 한 사람의 능력보다는 팀워크가 좋은 팀이구 팀워크가 좋은 팀은 서로 대화를 많이한다고 합니다. 내가 내성적인 성격이라면 맥주 한 잔 하면서 말하는.. 2019. 9. 13. Anti-VM 기법 뭘 했는지? 모르겠지만 벌써 추석이네요... 일어나니 4시가 넘었네요.. 다시 잘 준비를 하는게 좋겠죠?! [그림1] 랜섬웨어_실행 제 컴퓨터에서 테스트할 수는 없기 때문에 가상머신에서 테스트를 진행했습니다. 당연히 혹시모를 상황에 대비해서 네트워크 연결은 하지 않았구요!! Windows7에서 진행하였습니다. 가상머신이라도 아깝네요. https://www.boannews.com/media/view.asp?idx=80519 갠드크랩 최신 버전을 위한 복호화 툴, 무료로 배포 중 악명 높은 랜섬웨어인 갠드크랩(GandCrab)의 최신 버전으로부터 피해자들의 데이터를 살릴 수 있는 복구 툴이 개발돼 무료로 배포되고 있다. 현재 랜섬웨어 피해 복구 노력이 진행되고 있는 전 세계적인 프로젝트, 노모어랜섬(NoMo.. 2019. 9. 13. [FTZ]level20 드디어 드디어어어 level20 성인이 되기 일보직전입니다. 시작해 볼까요? 자세히 보면 fgets함수에서는 문제가 없어보이쥬? 그르나 printf함수를 사용할 때 변수를 바로 찍어버리네요. 결국 Format String Bug를 이용해서 문제를 해결하라는 건가요? Format String Bug란? 음.. "포맷스트링을 사용하지 않고 출력하는 함수에게 하는 공격?" 정도가 되겠네요. 보통 입력에 "%x, %x, %x"와 같은 것을 넣고, 매칭되는 변수가 없을 경우 스택을 4바이트씩 높여가며 해당 주소의 값을 출력해주는 버그가 발생하게 됩니다. + %n을 통해서 메모리 변조도 가능하지요. 어떻게 가능하냐면? printf("abcd%10d%n"); 을 하게되면 %n앞에서 사용한 문자열의 바이트 수를 세서 .. 2019. 9. 9. [FTZ]level19 오늘 안에 끝낼 수 있겠..죠? 시작해 볼까요? 소스가 굉장히 간단합니다!! 좋은데.. 가만보니 이전까지 있던 setreuid가 없네요? 이게 필요한 이유는 Drop Privilege 때문인데요. Drop privilege는 sh, bash, system()을 실행 시 euid가 아닌 ruid의 권한으로 프로세스를 실행하는 것을 의미합니다. SetUID가 설정된 파일에서 일시적으로 euid의 권한이 상승되어 중요시스템명령어 사용을 막기 위해서 사용합니다. 자세한 내용은 아래 링크를 참조하시면 됩니다. https://ccurity.tistory.com/176 접근권한[퍼미션] 1. 접근권한 1) chmod(Change Mode) 명령어 - 접근권한을 부여 혹은 제거할 수 있는 명령어이다. # chmod [.. 2019. 9. 8. [FTZ]level18 저는 열공하는 베짱이가 되기 위해 놀고 싶은 마음을 한 켠에 접어놓고 달려오다보니 level18까지 오게 되었네요. 시작해 볼까요? #include #include #include #include void shellout(void); int main() { char string[100]; int check; int x = 0; int count = 0; fd_set fds; printf("Enter your command: "); fflush(stdout); while(1) { if(count >= 100) printf("what are you trying to do?\n"); if(check == 0xdeadbeef) shellout(); else { FD_ZERO(&fds); FD_SET(STDIN_.. 2019. 9. 8. [FTZ]level17 아침이 밝았습니다. 깔끔하게 정신상태로 memset()하고 시작해볼까요? 보니까 level16과 비슷한 것도 같은데..? shell함수가 보이지 않네요!! 뭔가 막힌 느낌이네요. 우리가 level11에서는 변수에 shellcode를 삽입하고 그 주소를 리턴주소로 변조했습니다. 스택 내에 변수가 사이즈가 안나오니 우리는 환경변수를 이용해 봅시다. 그럼 환경변수란? 위키백과 왈 " 프로세스가 컴퓨터에서 동작하는 방식에 영향을 미치는, 동적인 값들의 모임이다." 라고 합니다. 조금 요약해보면 변수는 특정 프로그램에서 데이터를 메모리에 저장해 놓고 쓰지요? 그러나 여러 프로그램이 그 데이터에 쉽게 접근(참조)을 하게 하려면 환경변수를 사용합니다. 헛.. 막상 열어보니 우리가 만든 shellcode는 25바이트고.. 2019. 9. 8. [FTZ]level16 아... 모르고 level16 구경만 하려고 했으나.. 함수포인터가 두둥!! 보고나서 못 본 척하고 자려니 침대에 누워서 천장에 스택을 그리고 있을 것만 같아서.. 그러지 않기 위해 해결하고 자려고 합니다. main+6을 보면 [ebp-16]에 0x8048500을 넣고있네요? main+24를 보면 buf의 시작주소는 ebp-56이네요. 공격할 시나리오를 그려보면 함수포인터가 가리키는 곳이 현재는 printit이지만 shell을 가리키도록 변조하면 될 것 같습니다. [그림2]의 main+6에 있는 주소를 보았습니다. printit의 주소네요. shell의 주소도 확인해 볼까요? 0x80484d0이네요. main+33에 breakpoint를 걸었습니다. 딱히 여기에 걸지 않고 다른 곳에 breakpoint를.. 2019. 9. 8. [FTZ]level15 시간이 늦었고 오늘은 태풍도 스쳐지나갔고 달은 떴고 잠은 자야하지만!! 이대로 자버리면 꿈에서 아쉬워할 나?를 위해 level15까지만 해결하고 자려고 합니다. 시작해 볼까요? 엇!!!! 이거 level14에서 본거 아닌가요? 눈을 뜨고 다시 보니 6라인을 보니 canary가 주소로 되어있네요. 이걸 해결하는 방법은 2가지정도로 추측됩니다. 1) check가 가리키는 주소(canary)의 값을 0xdeadbeef로 변경하거나 2) check가 가리키는 주소(canary)를 0xdeadbeef가 있는 곳으로 변경하거나 입니다. 현실적으로 canary가 가리키는 곳에 접근을 하기가 더 힘드므로 check가 가리키는 주소를 변경해볼까 합니다. level14와 동일하게 main+17에서 ebp-56이 buf의 .. 2019. 9. 8. [FTZ]level14 앞으로 얼마나 더 어려워질까요? 기대와 걱정을 안고 시작해 볼까요? 이전과 비슷하고 특별한 것은 없어보이네요. 이 문제에서는 check변수가 Stack Guard 역활을 하고 있구요. 카나리는 이름도 예쁘네요. 광산의 카나리아에서 가져온 단어지만 이런부분을 연구하시는 분들은 센스가 넘치는 것 같습니다. 옆 길로 새기 전에 여기까지.. main+17에 보이는 [ebp-56]이 buf의 주소네요. main+29에 보이는 [ebp-16]이 check의 값이구요. 이제 그림을 그려볼까요? 이 그림대로라면? buf[40]+0xdeadbeef 만 넣어도 되겠네요? 공격코드를 만들어볼까요? 이제 공격을 해볼까요? /tmp/14_exploit.py import os import struct p32 = lambda x:.. 2019. 9. 8. [FTZ]level13 일찍일어난 새는 역시나 피곤하네요. 조금 더 졸리기 전에 시작해 볼까요? 힌트를 보면 long형 타입의 i가 있고 i가 변경될 경우 프로그램을 종료시키네요!! 이 부분은 메모리 보호기법 중 하나로 Stack Guard라고 합니다. 스택 카나리를 메인함수 가장 위에 선언하여 카나리가 변조되면 종료를 하게 됩니다. 우회하는 방법은 카나리의 원래 값을 찾아서 덮어씌워야 합니다. 위에 빨간 박스 [ebp-12]의 위치가 canary의 위치네요!! 그리고 파란박스에서 [ebp+12]에서 [ebp-1048]로 복사하네요. [ebp+12]는 argv이고, [ebp-1048]은 buf배열의 시작주소겠네요. c소스를 보니 1024바이트만큼 선언했으므로 나머지 24바이트는 dummy입니다. strcpy([ebp-1048].. 2019. 9. 7. 이전 1 ··· 3 4 5 6 7 8 9 ··· 13 다음