• 0
  • administrators

    අවවාදයයි!!! පෙර ලිකිත අවසරයකින් තොරව. තමාට හිමිකමක් නොමැති කිසියම් දෙයකට ප්‍රවේශ වීම, පරිහරණය කිරීම. හෝ එසේ කීරීමට උත්සාහ කිරීම ඔබ ජිවත් වන රටේ පවතින නීතිය අනුව වරදක් විය හැක. යම් ලෙසකින් ඔබ අතින් එවැනි වරදක් සිදුවුවහොත් එහි අනිසි ප්‍රථිපල ඔබ විසින්ම විද ගත යුතුය. මෙම පාඩම් මාලාවේ අත්හදා බැලීම් සියල්ල ඔබට බලපාන නීතිමය රාමුව තුල පමණක් සිදු කරනමෙන් ඉතා කාරුණිකව මම ඉල්ලා සිටිමි.

    මුලින්ම කියන්න ඕන මම අද පාඩමෙන් ඔයාලට දීර්ග ලෙස විස්තර කරන්නෙ nmap tool එක ක්‍රියා කරන ආකාරය සහ nmap යොදාගෙන online තියෙන host මොනවද කියල සොයා බලන ආකාරය. මෙය ටිකක් දිග පාඩමක්. හිතගෙන ඉන්නේ කොටස් දෙකකින් අවසන් කරන්න හැකිවෙයි කියා.

    දැනටමත් ඔයාල දන්නව nmap යොදාගෙන host එකක ports ටික scan කරන ආකාර. අපි Cyber Security ඉගෙන ගන්න කොට මුලින්ම දැනගන්න ඕන කොහොමද hacker කෙනෙක් අපේ servers / hosts ටික මුලින්ම සොයා ගන්නෙ කියල. එයාල මුලින්ම කරන්නෙ online තියෙන servers / hosts ටික සොයාගෙන (Host detection) දෙවනුව එම servers / hosts මත Port Scanning එකක් සිදුකිරීමයි. නමුත් අපි ඉගෙන ගන්න කොට කරන්නෙ මුලින්ම Port Scanning එක ඉගෙන ගෙන ඉන් අනතුරුව Host Discovery එක ඉගෙන ගන්න එක. එක තමයි අපි වගේ Cyber Security පොරවල් සහ හැකර්ස් ලගෙයි තියෙන මූලික වෙනස්කම් දෙකෙන් පළමු එක :D

    Port Scanning එකේ ප්‍රතිපලය මත තමා එයාල servers / hosts තුලට ප්‍රවේශ වීමට උපක්‍රම සැලසුම් කරන්නෙ. අපිට මුල්ම අවස්ථා වේදීම එනම් Host detection අවස්ථාවේ දීම අපේ servers / hosts ටික ඔවුන්ගේ ඇසට හසු නොවෙන ආකාරයට සගවා තබාගන්න පුළුවන් නම් hackers ලාගෙන් බේරිලා ඉන්න පුළුවන් කියල අපිට හිතෙනව, නමුත් ප්‍රයෝගිකව එහෙම කරන්න බෑ.

    නමුත් යම්තාක් දුරට අපිට පුළුවන් පහසුවන් හසු නෙවෙන ආකාරයට සගවා තබාගන්න. මේ හැම දෙකට කලින් අපි දැනගෙන ඉන්න ඕන අනවසරයෙන් අපේ සිස්ටම් වලට ඇතුල් වන පුද්ගලයන් කොහොමද අපේ සිස්ටම් online තියෙනවද කියල දැනගන්නෙ. මුලින්ම අපි ඉගෙන ගන්න ඕන එයාල යොදාගන්න තාක්ෂණික උපායන් හා ක්‍රම වේදයන්. මම මේ කියල දෙන කරුණු ඉතා හොදින් වටහාගන්න බලන්න. ගැටළුවක් තිබුනොත් කමෙන්ට් එකක් දන්න.

    nmap හා පරිසරය
    ඔයාල බලනවා ඇති මොකක්ද මේ "nmap හා පරිසරය" කියල මම කියන්න හදන්නෙ කියල. මම කතාකරන්න යන්නෙ මේ nmap කියන tool එකේ ක්‍රියාකාරිත්වය එය අපි බාවිතා කරන පරිසරය අනුව එහි පෙරනිමි (by default) ලෙස සකසා තිබෙන දේවල් ඉබේම වෙනස් වෙනව කියන එක ගැනයි.

    මම මේක අද මුලින්ම කියන්න හැදුවෙ පසුගිය සති කිහිපය තුල මට හමුවුන ලංකාවේ සිටින CEH කිහිපදෙනෙකු තුල දක්නට ලැබුන පොඩි පොඩි අඩුපාඩු කිහිපයක් නිසයි. මට දැනුන විදියට ඒ දේවල් එයාලගෙ දුර්වල කම් නිසා ඇතිවූ දෙයක් නොවේ. මම දැනගත් ආකාරයට ලංකාව තුල සිදුකරන Cyber Security පටමලාවන් තනිකරම මුදල් උපාය ගන්නා පරමාර්ථයෙන් සිදුකරන වෙළදාමක් නිසා පටමලාවන් හදාරන අයගේ අනාගතය පිළිබද ඔවුන්ට කිසිම වැදගත් කමක් නැති බවයි .

    හොදින් මතක තියාගන්න අපි Host Discovery එකක් nmap ටූල් එකෙන් කරනකොට අපි root privileges සහිතව එය රන් කරනවිට දි nmap හැසිරෙන ආකාරය සහ root privileges නොමැතිව රන් කරනවිට දි එය හැසිරෙන අකායන් වෙනස් බව. අපි මේ කරුණු තේරුම් නොගත්තොත් ලොකු අමාරුවක වැටෙනව කියල ඉදිරියේදී ඔයාලටම තේරුම් යනව.

    මම දැන් ඔයලට ඒ කියපු දේ නිදසුන් මගින් පැහැදිලි කරල දෙන්නම්. (සෑම පියවරක්ම මම උපරිම ආකාරයට නිරුපනය කරන්නම්)

    මම මුලින්ම මගේ target එක එනම් host server එක විදියට Ubuntu 17.04 VM එකක් යොදා ගන්නව. VM එක හදල තියෙන්නෙ Google Cloud Platform මත. මම Google Cloud Platform එකේ තියෙන Firewall එකෙන් කිසිදු port එකක් block කරන්නෑ. මේ VM එකේ සියලුම ports බාහිර අයට දැනට open කරල තියෙන්නෙ. පසුව මම Firewall එකක් VM එක තුල ස්ථාපනය කරනව පාඩමට අවශ්‍ය ආකාරයට. අදට firewall අවශ්‍ය නෑ.

    ඔයාල මම මේ කරන දේවල් හොදින් තේරුම් ගන්න බලන්න.

    මුලින්ම මම ලොග් වෙන්ව මගේ අලුත් VM එකට.

    ට්‍රයි ssh nix@104.198.XXX.70

    nix@Dell ~ $ ssh nix@104.198.XXX.70
    The authenticity of host '104.198.XXX.70 (104.198.XXX.70)' can't be established.
    ECDSA key fingerprint is SHA256:JHQPQmEZm9sGqcVZ4XhtGuqTNiqPTdyY7iulu/7hjFI.
    Are you sure you want to continue connecting (yes/no)? yes
    Warning: Permanently added '104.198.XXX.70' (ECDSA) to the list of known hosts.
    Welcome to Ubuntu 17.04 (GNU/Linux 4.10.0-24-generic x86_64)
     * Documentation:  https://help.ubuntu.com
     * Management:     https://landscape.canonical.com
     * Support:        https://ubuntu.com/advantage
     * Ubuntu 16.10 will reach end of life on Thursday, July 20, 2017
       How to upgrade from 16.10 to 17.04:
       - https://ubu.one/upgY2Z
      Get cloud support with Ubuntu Advantage Cloud Guest:
        http://www.ubuntu.com/business/services/cloud
    0 packages can be updated.
    0 updates are security updates.
    
    
    The programs included with the Ubuntu system are free software;
    the exact distribution terms for each program are described in the
    individual files in /usr/share/doc/*/copyright.
    Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by
    applicable law.
    nix@web:~$
    

    දැන් root privileges අරගනිමු
    ට්‍රයි sudo -i

    nix@web:~$ sudo -i
    root@web:~#
    

    ට්‍රයි apt-get update && apt-get upgrade -y

    root@web:~# apt-get update && apt-get upgrade -y
    Hit:1 http://us-central1.gce.archive.ubuntu.com/ubuntu zesty InRelease
    Get:2 http://us-central1.gce.archive.ubuntu.com/ubuntu zesty-updates InRelease [89.2 kB]                    
    Get:3 http://us-central1.gce.archive.ubuntu.com/ubuntu zesty-backports InRelease [89.2 kB]                  
    Get:4 http://archive.canonical.com/ubuntu zesty InRelease [10.2 kB]                                                                   
    Get:5 http://security.ubuntu.com/ubuntu zesty-security InRelease [89.2 kB]                                                            
    Get:6 http://us-central1.gce.archive.ubuntu.com/ubuntu zesty/universe Sources [8459 kB]
    Get:7 http://us-central1.gce.archive.ubuntu.com/ubuntu zesty/multiverse Sources [184 kB]      
    Get:8 http://us-central1.gce.archive.ubuntu.com/ubuntu zesty/restricted Sources [5064 B]
    Get:9 http://us-central1.gce.archive.ubuntu.com/ubuntu zesty/main Sources [912 kB]
    ---
    ---
    ---
    Processing triggers for libc-bin (2.24-9ubuntu2.2) ...
    root@web:~#
    

    අපි දැන් මේ VM එකට nginx වෙබ් server එක install කරමු. මම මේක web server හෝ web host කියල මෙතැන් සිට හදුන්වනව. හොදද ..?

    ට්‍රයි apt-get install -y nginx

    root@web:~# apt-get install -y nginx
    Reading package lists... Done
    Building dependency tree       
    Reading state information... Done
    The following additional packages will be installed:
      fontconfig-config fonts-dejavu-core libfontconfig1 libgd3 libjbig0 libjpeg-turbo8 libjpeg8 libnginx-mod-http-geoip libnginx-mod-http-image-filter
      libnginx-mod-http-xslt-filter libnginx-mod-mail libnginx-mod-stream libtiff5 libwebp6 libxpm4 nginx-common nginx-core
    Suggested packages:
      libgd-tools fcgiwrap nginx-doc ssl-cert
    The following NEW packages will be installed:
      fontconfig-config fonts-dejavu-core libfontconfig1 libgd3 libjbig0 libjpeg-turbo8 libjpeg8 libnginx-mod-http-geoip libnginx-mod-http-image-filter
      libnginx-mod-http-xslt-filter libnginx-mod-mail libnginx-mod-stream libtiff5 libwebp6 libxpm4 nginx nginx-common nginx-core
    0 upgraded, 18 newly installed, 0 to remove and 4 not upgraded.
    Need to get 2359 kB of archives.
    After this operation, 7805 kB of additional disk space will be used.
    Get:1 http://us-central1.gce.archive.ubuntu.com/ubuntu zesty/main amd64 libjpeg-turbo8 amd64 1.5.1-0ubuntu1 [113 kB]
    ---
    ---
    ---
    Processing triggers for ufw (0.35-4) ...
    Processing triggers for libc-bin (2.24-9ubuntu2.2) ...
    root@web:~#
    

    අපි දැන් බලමු අපේ web server එකේ nginx රන් වෙනවද කියල

    මුලින් අපි ps යොදාගෙන බලමු

    ට්‍රයි ps -lf -C "nginx"

    root@web:~# ps -lf -C "nginx"
    F S UID        PID  PPID  C PRI  NI ADDR SZ WCHAN  STIME TTY          TIME CMD
    1 S root      9933     1  0  80   0 - 33960 sigsus 11:57 ?        00:00:00 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
    5 S www-data  9935  9933  0  80   0 - 34041 ep_pol 11:57 ?        00:00:00 nginx: worker process
    root@web:~#
    

    දැන් netstat යොදාගෙන බලමු

    ට්‍රයි netstat -apnut|grep "nginx"

    root@web:~# netstat -apnut|grep "nginx"
    tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      9933/nginx: master  
    tcp6       0      0 :::80                   :::*                    LISTEN      9933/nginx: master  
    root@web:~#
    

    අපිට මේ කමාන්ඩ් එකෙන් පේනව nginx එක port 80 රන් වෙනව කියල.

    දැන් අපි මේ හදා ගත්ත VM එකත් එක්ක nmap යොදාගෙන කරන අපේ සෙල්ලම් ටික පටන් ගනිමු.

    මුලින්ම අපි web ට ping scan එකක් කරලා බලමු. දැනටමත් ඔයලා දන්නව ping scan එකක් කරන ආකාරය. නමුත් මම ඔයාලට කියල දුන්නෙ nmap පරණ version වල ping scan කරන ආකාරය. මතකයි නේද "nmap -sP " අලුත් nmap version තවමත් "-sP" සපෝර්ට් කරනව නමුත් අනාගතේ මොනව වෙයිද කියල කියන්න බෑනේ. එක නිසා අලුත් option එක බාවිතා කරල ping scan කරන ආකාරයත් අපි අද ඉගෙන ගනිමු. මෙහි දී ඇත්තටම සිදුවන්නෙ option සදහා අපි බාවිතා කරන English අකුරු වෙනස් වීමයි. මේ බලන්න.

    අලුත් nmap version මගින් ping scan කිරීමට බාවිතා කරන්නේ "-pS" වෙනුවට "-sn" කියන option එක.

    ට්‍රයි nmap -n -sn 104.198.XXX.70

    nix@Dell ~ $ nmap -n -sn 104.198.XXX.70
    Starting Nmap 7.01 ( https://nmap.org ) at 2017-07-15 18:32 +0530                                                                                                            
    Nmap scan report for 104.198.XXX.70                                                                                                                                          
    Host is up (0.43s latency).                                                                                                                                                  
    Nmap done: 1 IP address (1 host up) scanned in 0.43 seconds                                                                                                                  
    nix@Dell ~ $
    

    මම මේ කමාන්ඩ් එක රන් කරන්න කලින් nmap මගේ web ට යවන පණිවිඩ හා nmap ට ලැබෙන පණිවිඩ ටික capture කරගන්න tcpdump කියන tool එක වෙන terminal එකක මේවිදියට රන් කරා. nmap ගෙ රිසල්ට් එක ලැබුනට පස්සෙ "Ctrl c" press කරල capture වෙන එක නතර කරා. එවිට මට 104.198.XXX.70_sn_nix.cap කියල file එකක් මගේ home එකේ හැදිල තියෙනව.
    (ඔයාලගේ PC එකේ tcpdump නැතිනම් install කරගන්න. Ubuntu වලනම් "apt-get install -y tcpdump")

    tcpdump මගින් capture කිරීමට

    ට්‍රයි sudo tcpdump -n net 104.198.XXX.70 -w 104.198.XXX.70_sn_nix.cap

    nix@Dell ~ $ sudo tcpdump -n net 104.198.XXX.70 -w 104.198.XXX.70_sn_nix.cap
    tcpdump: listening on wlp2s0, link-type EN10MB (Ethernet), capture size 262144 bytes
    ^C6 packets captured
    6 packets received by filter
    0 packets dropped by kernel
    nix@Dell ~ $
    

    ට්‍රයි ls -l ~/104.198.XXX.70_sn_nix.cap

    nix@Dell ~ $ ls -l ~/104.198.XXX.70_sn_nix.cap
    -rw-r--r-- 1 root root 528 Jul 15 18:32 /home/nix/104.198.XXX.70_sn_nix.cap
    nix@Dell ~ $
    

    අපි දැන් මුල්ම පාඩමෙන් ඉගෙන ගතිපු "-pS" option එක බාවිතා කරල tcpdump එකෙන් ඉහත ආකාරයට capture කරගෙන ලැබෙන ප්‍රතිපල සංසන්දනය කරමු.

    ට්‍රයි nmap -n -sP 104.198.XXX.70

    nix@Dell ~ $ nmap -n -sP 104.198.XXX.70
    Starting Nmap 7.01 ( https://nmap.org ) at 2017-07-15 18:31 +0530
    Nmap scan report for 104.198.XXX.70
    Host is up (0.62s latency).
    Nmap done: 1 IP address (1 host up) scanned in 0.62 seconds
    nix@Dell ~ $
    

    ට්‍රයි sudo tcpdump -n net 104.198.XXX.70 -w 104.198.XXX.70_sP_nix.cap

    nix@Dell ~ $ sudo tcpdump -n net 104.198.XXX.70 -w 104.198.XXX.70_sP_nix.cap
    tcpdump: listening on wlp2s0, link-type EN10MB (Ethernet), capture size 262144 bytes
    ^C6 packets captured
    6 packets received by filter
    0 packets dropped by kernel
    nix@Dell ~ $
    

    අපි මේ ආකාරයට capture කරගනිපු .cap file දෙක tshark කියන command line tool එකෙන් මේ ආකාරයට analyze කරගනිමු. (tshark tool එක Ubuntu සදහා මේ ආකාරයට install කරගන්න "apt-get install -y tshark")

    ට්‍රයි tshark -r ~/104.198.XXX.70_sn_nix.cap

    nix@Dell ~ $ tshark -r  ~/104.198.XXX.70_sn_nix.cap
        1   0.000000 192.168.43.74 → 104.198.XXX.70 TCP 74 50310 → 80 [SYN] Seq=0 Win=29200 Len=0 MSS=1460 SACK_PERM=1 TSval=8689721 TSecr=0 WS=128
        2   0.000023 192.168.43.74 → 104.198.XXX.70 TCP 74 45552 → 443 [SYN] Seq=0 Win=29200 Len=0 MSS=1460 SACK_PERM=1 TSval=8689721 TSecr=0 WS=128
        3   0.428451 104.198.XXX.70 → 192.168.43.74 TCP 74 80 → 50310 [SYN, ACK] Seq=0 Ack=1 Win=28160 Len=0 MSS=1400 SACK_PERM=1 TSval=1993428334 TSecr=8689721 WS=128
        4   0.428523 192.168.43.74 → 104.198.XXX.70 TCP 66 50310 → 80 [ACK] Seq=1 Ack=1 Win=29312 Len=0 TSval=8689828 TSecr=1993428334
        5   0.428599 192.168.43.74 → 104.198.XXX.70 TCP 66 50310 → 80 [RST, ACK] Seq=1 Ack=1 Win=29312 Len=0 TSval=8689828 TSecr=1993428334
        6   0.538531 104.198.XXX.70 → 192.168.43.74 TCP 54 443 → 45552 [RST, ACK] Seq=1 Ack=1 Win=0 Len=0
    nix@Dell ~ $
    

    ට්‍රයි tshark -r ~/104.198.XXX.70_sP_nix.cap

    nix@Dell ~ $ tshark -r  ~/104.198.XXX.70_sP_nix.cap
        1   0.000000 192.168.43.74 → 104.198.XXX.70 TCP 74 50302 → 80 [SYN] Seq=0 Win=29200 Len=0 MSS=1460 SACK_PERM=1 TSval=8685698 TSecr=0 WS=128
        2   0.000055 192.168.43.74 → 104.198.XXX.70 TCP 74 45544 → 443 [SYN] Seq=0 Win=29200 Len=0 MSS=1460 SACK_PERM=1 TSval=8685699 TSecr=0 WS=128
        3   0.617504 104.198.XXX.70 → 192.168.43.74 TCP 74 80 → 50302 [SYN, ACK] Seq=0 Ack=1 Win=28160 Len=0 MSS=1400 SACK_PERM=1 TSval=1993424312 TSecr=8685698 WS=128
        4   0.617550 192.168.43.74 → 104.198.XXX.70 TCP 66 50302 → 80 [ACK] Seq=1 Ack=1 Win=29312 Len=0 TSval=8685853 TSecr=1993424312
        5   0.617588 192.168.43.74 → 104.198.XXX.70 TCP 66 50302 → 80 [RST, ACK] Seq=1 Ack=1 Win=29312 Len=0 TSval=8685853 TSecr=1993424312
        6   0.677420 104.198.XXX.70 → 192.168.43.74 TCP 54 443 → 45544 [RST, ACK] Seq=1 Ack=1 Win=0 Len=0
    nix@Dell ~ $
    

    දැන් ඔයාලට පේනවා අවස්ථා දෙකේදීම වෙලා තියන දේ එකයි කියල.

    දැන් පැහැදිලියි මෙතන වෙලා තියෙන දේ English අකුරු වෙනස් වීමක් පමණයි කියල :)

    පොඩ්ඩක් ඉන්න..... අපිට මේ capture කරගත්තු දේවල් ටිකෙන් ලොකු දෙයක් ඉගෙන ගන්න පුළුවන්. අපි බලමු මොකක්ද මේ nmap මගේ web ට යවල තියෙන්නෙ කියල. මේ "tshark -r ~/104.198.XXX.70_sn_nix.cap" කමාන්ඩ් එකෙන් ලැබුන දේවල් ටික අපි විශ්ලේෂණය කරලා බලමු

    1   0.000000 192.168.43.74 → 104.198.XXX.70 TCP 74 50310 → 80 [SYN] Seq=0 Win=29200 Len=0 MSS=1460 SACK_PERM=1 TSval=8689721 TSecr=0 WS=128
        2   0.000023 192.168.43.74 → 104.198.XXX.70 TCP 74 45552 → 443 [SYN] Seq=0 Win=29200 Len=0 MSS=1460 SACK_PERM=1 TSval=8689721 TSecr=0 WS=128
        3   0.428451 104.198.XXX.70 → 192.168.43.74 TCP 74 80 → 50310 [SYN, ACK] Seq=0 Ack=1 Win=28160 Len=0 MSS=1400 SACK_PERM=1 TSval=1993428334 TSecr=8689721 WS=128
        4   0.428523 192.168.43.74 → 104.198.XXX.70 TCP 66 50310 → 80 [ACK] Seq=1 Ack=1 Win=29312 Len=0 TSval=8689828 TSecr=1993428334
        5   0.428599 192.168.43.74 → 104.198.XXX.70 TCP 66 50310 → 80 [RST, ACK] Seq=1 Ack=1 Win=29312 Len=0 TSval=8689828 TSecr=1993428334
        6   0.538531 104.198.XXX.70 → 192.168.43.74 TCP 54 443 → 45552 [RST, ACK] Seq=1 Ack=1 Win=0 Len=0
    

    අපි line එකෙන් line එක අරගෙන බලමු nmap කරලා තියෙන දේ.
    *** යලිත් මතක් කරගන්න මගේ web ගේ port 80 වල nginx web server එක රන් වෙනව කියල.

    1. nmap මගේ PC එකේ (192.168.43.74) සිට 104.198.XXX.70 හි port 80 වලට [SYN] flag එක සෙට් කරපු TCP packet එකක් යවනව. (අපි මේක පලවෙනි session එක කියල කියමු)
    2. nmap මගේ PC එකේ (192.168.43.74) සිට 104.198.XXX.70 හි port 443 වලට [SYN] flag එක සෙට් කරපු තවත් TCP packet එකක් යවනව. (අපි මේක දෙවන session එක කියල කියමු)
    3. මගේ web (104.198.XXX.70) port 80 වලට ලැබුන [SYN] එකට ප්‍රතිචාර ලෙස [SYN, ACK] flags සෙට් කරපු TCP packet එකක් මගේ PC (192.168.43.74) එකට යවනව.
    4. web ගෙන් ලැබුන [SYN, ACK] ට ප්‍රතිචාර ලෙස namp (මගේ PC එක 192.168.43.74 ) [ACK] flag එක සෙට් කරපු TCP packet එකක් web ට (104.198.XXX.70) යවනව. හොදින් මතක තියාගන්න මේ වනවිට TCP 3-way handshake එක සිදු වෙලා ඉවරයි. ඒ කියන්නෙ දැනටමත් අපි මාට්ටු වෙලා ඉවරයි. :)
    5. නැවතත් nmap මගේ web ට [RST, ACK] flags සෙට් කරපු TCP packet එකක් යවල connection එක (පලවෙනි session එක) බිද වට්ටනව.
    6. මෙතන වෙලා තියෙන්නෙ nmap විසින් මගේ web ගෙ port 443 ට යවපු (2වන පියවරේදි / දෙවන session එක) [SYN] එකට ප්‍රතිචාර ලෙස [RST, ACK] flags සෙට් කරපු TCP packet එකක් web (104.198.XXX.70) විසින් nmap (192.168.43.74) වෙත එවීමයි . එකෙන් කියනෙ web විසින් connection එක බිද වට්ටනව කියල. එකට හේතුව තමා web ගෙ port 443 ට ඇහුම් කන්දෙන කිසිදු සේවාවක් නොමැති වීම. නමුත් අපිට මෙතන යමක් ඉගෙන ගන්න තියෙනව.

    web ගෙ service එකක් රන් නොවුනට අපිට කිසියම් ප්‍රතිචාරයක් ලැබුණ කියන එක. අපිට මේ වගේ පොඩි පොඩි දේවල් හුගක් වැදගත් වෙනව. හොදින් මතක තියාගන්න. මේකත් හරියට අපේ නිවසට කවුරු හරි ඇවිල්ල දොරට තට්ටු කරල අහනව "ගෙදර කවුද ඉන්නෙ කියල" එතකොට ගෙදර ඉන්න අයෙක් කියනව "ගෙදර කවුරුවත් නෑ කියල"

    අපි මෙතැන කරල තියෙන්නෙ Host Discovery එකක් නිසා 104.198.XXX.70 online ඉන්නෙ කියල දැනගන්න මේකත් අපිට බාවිතා කරන්න පුළුවන්. නමුත් මේ අවස්ථාවෙ nmap විසින් එයාගෙ තීරණයට යොදාගෙන තියෙන්නෙ තුන්වන පියවරේදි ලැබුණු [SYN, ACK] කියන ප්‍රතිචාරයයි.

    අපිට මෙන්න මේ විදියට nmap තමන්ගෙ තීරණයට පැමිණීමට යොදාගත් හේතුව සොයාගන්න පුළුවන්.

    ට්‍රයි nmap -n -sn 104.198.XXX.70 --reason

    nix@Dell ~ $ nmap -n -sn 104.198.XXX.70 --reason
    Starting Nmap 7.01 ( https://nmap.org ) at 2017-07-16 07:53 +0530
    Nmap scan report for 104.198.XXX.70
    Host is up, received syn-ack (0.54s latency).
    Nmap done: 1 IP address (1 host up) scanned in 0.54 seconds
    nix@Dell ~ $
    

    මේ syn-ack එක අපිට ලැබුන ආකාරය ගැන ඉහත 3වන පියවරේ තියෙනව.

    අපි තව පියවරක් ඉදිරියට ගිහිල්ල බලමු මගේ web ගෙ port 80 වල service එකක් රන් නොවන විට nmap කොහොමද host එක online ඉන්නවද කියල දැනගන්නෙ. මුලින්ම 104.198.XXX.70 එකට ලොග් වෙලා nginx ගෙ service එක stop කරමු.

    ට්‍රයි sudo service nginx stop

    nix@web:~$ sudo service nginx stop
    nix@web:~$
    

    දැන් tcpdump එකත් වෙන terminal එකක රන්වෙන අතරෙ nmap රන් කරමු.

    ට්‍රයි nmap -n -sn 104.198.XXX.70 --reason

    nix@Dell ~ $ nmap -n -sn 104.198.XXX.70 --reason
    Starting Nmap 7.01 ( https://nmap.org ) at 2017-07-16 08:19 +0530
    Nmap scan report for 104.198.XXX.70
    Host is up, received conn-refused (0.28s latency).
    Nmap done: 1 IP address (1 host up) scanned in 0.28 seconds
    nix@Dell ~ $
    

    පොඩ්ඩක් බලන්න මේ line එක දිහා "Host is up, received conn-refused (0.28s latency)." මේ අවස්ථාවෙ අපිට කලින් වගේ syn-ack එකක් ලැබුනෙ නෑ. එනිසා nmap එයාගෙ තීරණයට යොදාගෙන තියෙන්නෙ මම කලින් විස්තර කරපු web ගෙන් ලැබුන [RST, ACK] flags set කරපු TCP packet එක.

    tcpdump සදහා

    ට්‍රයි sudo tcpdump -n net 104.198.XXX.70 -w

    104.198.XXX.70_sn_no_nginx_nix.cap
    nix@Dell ~ $ sudo tcpdump -n net 104.198.XXX.70 -w 104.198.XXX.70_sn_no_nginx_nix.cap
    tcpdump: listening on wlp2s0, link-type EN10MB (Ethernet), capture size 262144 bytes
    ^C4 packets captured
    4 packets received by filter
    0 packets dropped by kernel
    nix@Dell ~ $
    

    දැන් අපි tshark පාරක් දල බලමු.

    ට්‍රයි tshark -r ~/104.198.XXX.70_sn_no_nginx_nix.cap

    nix@Dell ~ $ tshark -r ~/104.198.XXX.70_sn_no_nginx_nix.cap
        1   0.000000 192.168.43.74 → 104.198.XXX.70 TCP 74 34170 → 80 [SYN] Seq=0 Win=29200 Len=0 MSS=1460 SACK_PERM=1 TSval=1575723 TSecr=0 WS=128
        2   0.000030 192.168.43.74 → 104.198.XXX.70 TCP 74 50234 → 443 [SYN] Seq=0 Win=29200 Len=0 MSS=1460 SACK_PERM=1 TSval=1575723 TSecr=0 WS=128
        3   0.275625 104.198.XXX.70 → 192.168.43.74 TCP 54 443 → 50234 [RST, ACK] Seq=1 Ack=1 Win=0 Len=0
        4   0.278906 104.198.XXX.70 → 192.168.43.74 TCP 54 80 → 34170 [RST, ACK] Seq=1 Ack=1 Win=0 Len=0
    nix@Dell ~ $
    

    දැන් ඔයාලට හොදින් පැහැදිලි වෙනව nmap ගෙ ක්‍රියාකාරිත්වය. හොදින් මතක තියාගන මෙතෙක් වේලා අපි nmap රන් කලේ root privileges නොමැතිව.

    අපි දැන් බලමු root privileges ඇතිව nmap රන් කරන විට එයාගේ හැසිරීම මොන වගේද කියල.

    ඔන්න මම අයෙත් වතාවක් nginx start කර මගේ web ගෙ.

    ට්‍රයි sudo service nginx start

    nix@web:~$ sudo service nginx start
    nix@web:~$
    

    netstat පාරක් දල චෙක් කරලත් බලමු :)

    ට්‍රයි sudo netstat -apnut|grep "nginx"

    nix@web:~$ sudo netstat -apnut|grep "nginx"
    tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      16619/nginx: master 
    tcp6       0      0 :::80                   :::*                    LISTEN      16619/nginx: master 
    nix@web:~$
    

    දැන් අපි කලින් nmap රන් කරන්න යොදාගත්ත කමාන්ඩ්ස් ටික root privileges ඇතිව බාවිතා කරමු. ඒ අතරේදීම tcpdump යොදාගනිමින capture කිරීමත් සිදු කරමු.

    ට්‍රයි sudo nmap -n -sn 104.198.XXX.70 --reason

    nix@Dell ~ $ sudo nmap -n -sn 104.198.XXX.70 --reason
    Starting Nmap 7.01 ( https://nmap.org ) at 2017-07-16 09:54 +0530
    Nmap scan report for 104.198.XXX.70                                                                                                                                          
    Host is up, received reset ttl 54 (0.43s latency).                                                                                                                           
    Nmap done: 1 IP address (1 host up) scanned in 0.64 seconds                                                                                                                  
    nix@Dell ~ $
    

    දැන් බලමු nmap මගේ web ට මොනවද යැව්වෙ සහ nmap ට මොනවද web ගෙන් ලැබුනෙ කියල.

    ට්‍රයි tshark -r ~/104.198.XXX.70_sn_root.cap

    nix@Dell ~ $ tshark -r ~/104.198.XXX.70_sn_root.cap
        1   0.000000 192.168.43.74 → 104.198.XXX.70 ICMP 42 Echo (ping) request  id=0x6535, seq=0/0, ttl=42
        2   0.000027 192.168.43.74 → 104.198.XXX.70 TCP 58 59513 → 443 [SYN] Seq=0 Win=1024 Len=0 MSS=1460
        3   0.000037 192.168.43.74 → 104.198.XXX.70 TCP 54 59513 → 80 [ACK] Seq=1 Ack=1 Win=1024 Len=0
        4   0.000044 192.168.43.74 → 104.198.XXX.70 ICMP 54 Timestamp request    id=0x1593, seq=0/0, ttl=57
        5   0.426296 104.198.XXX.70 → 192.168.43.74 TCP 54 443 → 59513 [RST, ACK] Seq=1 Ack=1 Win=0 Len=0
        6   0.466310 104.198.XXX.70 → 192.168.43.74 TCP 54 80 → 59513 [RST] Seq=1 Win=0 Len=0
        7   0.517119 104.198.XXX.70 → 192.168.43.74 ICMP 42 Echo (ping) reply    id=0x6535, seq=0/0, ttl=54 (request in 1)
    nix@Dell ~ $
    

    දැන් ඔයාලට දැකපු ගමන්ම පේනව ලොකු වෙනසක් වෙලා තියෙනව කියල. මම හිතවන ඔයාලට මෙතන nmap හැසිරුණ ආකාරය තේරුම් ගන්න පුළුවන් කියල. කමක් නෑ අයෙත් මොකටද මම පේලියෙන් පේලිය කෙටියෙන් විස්තර කරන්නම් :D

    1. මුලින්ම nmap (192.168.43.74) ICMP "Echo request" එකක් මගේ web (104.198.XXX.70) ට යවනව. (අමතර කරුණක් : අපි හැමෝම දන්නා ping කමාන්ඩ් එක වැඩකරන්නෙ ICMP "Echo request" සහ "Echo reply" messages බාවිතා කරල)
    2. දෙවනුව nmap මගේ PC එකේ (192.168.43.74) සිට 104.198.XXX.70 හි port 443 වලට [SYN] flag එක සෙට් කරපු තවත් TCP packet එකක් යවනව.
    3. අනතුරුව nmap (192.168.43.74) ගෙ සිට 104.198.XXX.70 හි port 80 වලට [ACK] flag එක සෙට් කරපු TCP packet එකක් යවනව. හොදින් බලන්න මේක TCP 3-way handshake එකේදී සිදු නොවෙන දෙයක්. nmap ට මේ ආකාරයට සම්මතයෙන් බැහැරව වැඩ කරන්න හැකියාව ලැබෙන්නෙ අපි nmap ව root privileges සහිතව රන් කරන විට දී පමණයි. nmap මේකෙන් බලාපොරොත්තු වෙන්නෙ මගේ web host ව ගොනාට අන්දන එක. ගොනාට අන්දවනව කියල කිව්වට මේකෙන් වෙන්නෙ nmap ට non-stateful firewalls මගහැර යාමට පුළුවන් කම ලැබීමයි. මේ ගැන හා nmap ගෙ කපටි වැඩ ගැන වැඩි විස්තර මම ඔයාලට අවසථාව ලැබෙන අයුරින් පැහැදිලි කරල දෙන්නම්.
    4. මේ අවස්ථාවෙන් පෙන්නුම් කරන්නෙ nmap විසින් හතරවන පියවර ලෙස ICMP "Timestamp request" එකක් web (104.198.XXX.70) ට යවපු එක.
    5. මේ තියෙන්නෙ මගේ web (104.198.XXX.70) port 443 ට යවපු [SYN] එකට ප්‍රතිචාර ලෙස මගේ PC (192.168.43.74) එකට ලැබුන [RST, ACK] flags සෙට් කරපු TCP packet එක. මෙහිදී කලින් වතාවෙ වගේම web කරල තියෙන්නෙ "ගෙදර කවුද ඉන්නෙ කියල ඇහුවම, ගෙදර කවුරුවත් නෑ කියල" කියනව වගේ වැඩක්.
    6. මෙහිදීත් වෙලා තියෙන්නෙ nmap විසින් මගේ web ගෙ port 80ට ගොනාට අන්දවන්න යවපු [ACK] එකට ප්‍රතිචාරය ලෙස [RST] flag එක set කරපු TCP packet එකක් nmap ට යැවීමයි. එතැනදී web විසින් ACK එකක් යවන්නෙ නෑ මොකද එයට TCP connection එකක් ආරම්බ කරන්න මුලින් එවන [SYN] flag එක සෙට් කරපු TCP packet එකක් නොලැබුන නිසා. දැන් web ඉන්නෙ confused වෙලා. ඒ වුනාට nmap ඉන්නෙ සතුටින් මොකද එයට web කියන host එක online කියල තව හෝඩුවාවක් ලැබුන නිසා.
    7. මේකෙන් පේන්න තියෙන්නෙ. nmap මුලින්ම යවපු ICMP "Echo request" එකට ලැබුන සාර්ථක ප්‍රතිචාරය. web ව nmap ට ICMP "Echo reply" එකකින්ම උත්තර දීල. මෙයත් තව එක් හෝඩුවාවක්.

    අපි බලමු nmap ගෙ අවසන් තීරණයට මුල්වුණ හේතුව කුමක්ද කියල. එය තමයි "reset ttl 54". මේ කියන්නෙ web එක එවපු [RST, ACK] එක ගැනයි.

    දැන් ඔයාලට පේනවා නේද nmap කියන්නෙ හරිම smart tool එකක් කියල. එත් smart වුනාට අපිට එයා කරන දේවල් දැනගන්න ටිකක් මහන්සි වෙන්න වුණා. ඇත්තටම tcpdump සහ tshark වැනි tools බාවිතා නොකර අපිට බැරිද nmap වෙත එන සහ nmap යවන packets ගැන අදහසක් ගන්න......?

    ඔව් nmap ට පුළුවන් තමා යවන සහ තමාට ලැබෙන පණිවිඩ ගැන තොරතුරු ටිකක් පෙන්වන්න නමුත් මෙය tcpdump හා tshark එකතුව ලබාදෙන විස්තරාත්මක output එකක් වගේනම් නොවේ. එනමුත් බොහෝ වේලාවන් වලට අපිට එය හොදටම ප්‍රමාණවත්.

    අපි දැන් බලමු. කොහොමද අපි nmap ගෙන් ඒ විදියෙ විස්තර ටිකක් ලබාගන්නෙ කියල අපිට ඒ සදහා nmap කමාන්ඩ් එකට මෙන්න මේ --packet-trace කියන ටිකත් එකතු කරන්න වෙනව.

    ට්‍රයි sudo nmap -n -sn 104.198.XXX.70 --reason --packet-trace

    nix@Dell ~ $ sudo nmap -n -sn 104.198.XXX.70 --reason --packet-trace
    Starting Nmap 7.01 ( https://nmap.org ) at 2017-07-16 16:56 +0530
    SENT (0.0400s) ICMP [192.168.43.74 > 104.198.XXX.70 Echo request (type=8/code=0) id=7473 seq=0] IP [ttl=52 id=64244 iplen=28 ]
    SENT (0.0401s) TCP 192.168.43.74:60973 > 104.198.XXX.70:443 S ttl=48 id=42266 iplen=44  seq=1477194907 win=1024 <mss 1460>
    SENT (0.0402s) TCP 192.168.43.74:60973 > 104.198.XXX.70:80 A ttl=41 id=36495 iplen=40  seq=0 win=1024 
    SENT (0.0403s) ICMP [192.168.43.74 > 104.198.XXX.70 Timestamp request (type=13/code=0) id=63452 seq=0 orig=0 recv=0 trans=0] IP [ttl=53 id=29062 iplen=40 ]
    RCVD (0.6435s) TCP 104.198.XXX.70:443 > 192.168.43.74:60973 RA ttl=54 id=31143 iplen=40  seq=0 win=0 
    Nmap scan report for 104.198.XXX.70
    Host is up, received reset ttl 54 (0.60s latency).
    Nmap done: 1 IP address (1 host up) scanned in 0.85 seconds
    nix@Dell ~ $
    

    ඉහත result එකේ RA කියල කෙටියෙන් කියන්නේ RST, ACK එකට හොදේ.

    අපි nmap ගෙ packet trace එක enable කරල ලැබෙන ප්‍රතිපලයේ තිබෙන්නෙ packets 5ක විස්තර පමණයි. නමුත් අපේ tcpdump මගින් capture කරපු file එකේ packets 7ක විස්තර තියෙනවා. දැන් ඔයාලට අනිව ප්‍රශ්නයක් ඇතිවෙලා ඇති. ඒක ගණන් ගන්න එපා :) එකට හේතුව තමයි. tcpdump ට සම්පුර්ණ packets ටික capture කරගන්න පුළුවන් වුනාට. nmap 5වන packet එකෙන් පස්සෙ capture කරන එක නතර කරනව. මොකද nmap තමාට අවශ්‍ය දෙය ලැබුන වහාම, එනම් target host එක online කියල තීරණය කරන්න පුළුවන් ප්‍රමාණවත් සාදකයක් ලැබුණු ගමන් එය තවත් packets බලාපොරොත්තු නොවී කෙලින්ම අපිට result එක දෙනව. එකයි nmap ගෙ packet trace එකේ packets ගණන අඩු. මම හිතනව ඔයාලට දැන් මෙම කරුණ පැහැදිලියි කියා.

    nmap යොදා Host Discovery සිදුකරන විට Firewalls මගින් එයට සිදුකල හැකි බාධාවන් ගැන කතා කරන්නට නැවත හමුවෙමු.

    ස්තුතියි!