ProxyChains ఏమి పట్టుకుంటుంది, ఏమి వదిలేస్తుంది
ProxyChains తాను ప్రారంభించే ప్రోగ్రామ్లో లైబ్రరీ కాల్లను పట్టుకుంటుంది. maps, strace మరియు ఒక అభ్యర్థనతో TCP కవరేజీని నిర్ధారించండి, ఆపై DNS లేదా UDP కూడా అనుసరిస్తాయని భావించడం ఆపండి.
ProxyChains-NG ఎటువంటి సొరంగం సృష్టించదు. ఇది ప్రారంభించే ఒకే ప్రోగ్రామ్ లోపల నెట్వర్క్కు సంబంధించిన libc కాల్లను భర్తీ చేసే లైబ్రరీని ముందుగానే లోడ్ చేస్తుంది, కాబట్టి సరిహద్దు ప్రక్రియలోని కాల్, మొత్తం పరికరం మార్గం కాదు. ఈ భేదమే విజయవంతమైన పరీక్ష నిజంగా ఏమి నిరూపిస్తుందో నిర్ణయిస్తుంది. గొలుసు ద్వారా పనిచేసే curl ఒక పట్టుబడిన కాల్ను నిర్ధారిస్తుంది, పేరు పరిష్కారం, UDP లేదా ప్రతి చైల్డ్ ప్రక్రియ ఒకే మార్గంలో వెళ్లిందని కాదు. క్రింది మార్గదర్శిని మూడు దశల్లో కవరేజీని నిర్ధారించి, ఆపై హుక్ ఏమి చేరుకోలేదో జాబితా చేస్తుంది.
ప్రీలోడ్ ఒక కనెక్షన్ను ఎలా చేరుకుంటుంది
ప్రారంభంలో లాంచర్ libproxychains ను LD_PRELOAD లో ఉంచి ఆపై లక్ష్య ప్రోగ్రామ్ను అమలు చేస్తుంది. లైబ్రరీ నిజమైన libc చిహ్నాలను పరిష్కరించి connect మరియు getaddrinfo వంటి ఫంక్షన్ల తన స్వంత సంస్కరణలతో భర్తీ చేస్తుంది. ఆ చిహ్నాల గుండా వెళ్లే కాల్లు కాన్ఫిగరేషన్ ఫైల్లోని SOCKS లేదా HTTP ప్రాక్సీకి తిరిగి రాయబడతాయి. వేరే మార్గం తీసుకునే కాల్లు హుక్ను ఎప్పటికీ కలవవు, అందుకే హామీ ప్రతి కాల్కు, మొత్తం యంత్రానికి కాదు.
డైనమిక్గా లింక్ చేయబడిన ప్రోగ్రామ్లు మాత్రమే పాల్గొంటాయి, సురక్షిత అమలు కింద ఉన్న setuid బైనరీలు ప్రీలోడ్ను పూర్తిగా విస్మరిస్తాయి. సంతానం పర్యావరణాన్ని వారసత్వంగా పొందుతాయి, కానీ లాంచర్ దాన్ని స్థానంలో ఉంచినంత వరకే.
లైబ్రరీ ఆ ప్రక్రియలో లోడ్ అయిందని నిర్ధారించండి
అభ్యర్థనను ప్రారంభించి, దాన్ని ప్రారంభించిన షెల్కు బదులుగా సజీవ ప్రక్రియను పరిశీలించండి. maps ఫైల్ ఈ సమయంలో ప్రక్రియలో మ్యాప్ చేయబడిన ప్రతి భాగస్వామ్య వస్తువును చూపిస్తుంది.
proxychains4 -q curl -sS --max-time 8 https://example.com/ -o /dev/null &
pgrep -a curl
grep libproxychains /proc/$(pgrep -n curl)/mapsసరిపోలిక హుక్ చేయబడిన లైబ్రరీ ఉనికిని నిర్ధారిస్తుంది, అది అవసరం కానీ సరిపోదు. ఖాళీ ఫలితం సాధారణంగా మీరు మరొక ప్రక్రియను పరిశీలించారని అర్థం, ఉదాహరణకు లాంచర్కు ముందు ప్రారంభమైన ఇన్స్టాన్స్కు URL ఇచ్చిన బ్రౌజర్. మరేదైనా వెంబడించే ముందు ldd తో బైనరీ డైనమిక్గా లింక్ అయిందో లేదో తనిఖీ చేయండి, ఎందుకంటే స్థిర బిల్డ్ ప్రీలోడ్ను అసలు లోడ్ చేయలేదు. ఆపై లాంచర్ నిజంగా ఉపయోగించిన కాన్ఫిగరేషన్లోని ప్రాక్సీ జాబితాను చదవండి, ఎందుకంటే పాత మార్గం లేదా మూసిన పోర్ట్ పనిచేసే హుక్ను ఇస్తుంది కానీ పనిచేసే గొలుసును ఇవ్వదు.
ప్రక్రియ నుండి బయటకు వెళ్లే కనెక్షన్లను ట్రేస్ చేయండి
లైబ్రరీ ఉనికి ప్రతి కాల్ తిరిగి రాయబడిందని నిరూపించదు, కాబట్టి సిస్టమ్ కాల్లను అనుసరించండి. ట్రేసర్ కింద ఒక అభ్యర్థనను నడపండి మరియు సాకెట్లు నిజంగా ఎక్కడికి వెళ్లాయో చదవండి.
strace -f -e trace=connect -o /tmp/pc.trace proxychains4 -q curl -sS https://example.com/ -o /dev/null
grep -o "sin_port=htons([0-9]*)" /tmp/pc.trace | sort -uట్రేస్ మీ ప్రాక్సీ ముగింపు బిందువుకు ఉన్న కనెక్షన్లను మాత్రమే చూపాలి, పోర్ట్ కాన్ఫిగరేషన్ ఫైల్లోని నమోదుతో సరిపోలాలి. లక్ష్య సైట్ గమ్య చిరునామాలు ట్రేస్లో నేరుగా కనిపిస్తే ఆ కాల్ హుక్ను దాటవేసిందని అర్థం, మరియు అదే మీరు వెతుకుతున్న ఆవిష్కరణ. ఫైల్ పేరుపై నమ్మకం పెట్టుకోవడం బదులు పోర్ట్ నంబర్లను ప్రాక్సీ జాబితాతో పోల్చండి, ఎందుకంటే మరొక ప్రాజెక్ట్ నుండి మిగిలిన కాన్ఫిగరేషన్ నిశ్శబ్ద ప్రత్యక్ష ప్రవేశానికి సాధారణ మూలం. ఆమోద రికార్డు కోసం ట్రేస్ను ఉంచండి; అది సెకన్లలో జరుగుతుంది మరియు కవరేజీ గురించిన వాదనలను తీర్పు చేస్తుంది.
హుక్ ఏమి కవర్ చేయలేదో నిర్ణయించండి
proxychains-ng ప్రాజెక్ట్ రీడైరెక్షన్ను TCP కు పరిమితం చేస్తుంది మరియు స్క్రిప్ట్లు, నేపథ్య ప్రక్రియలు మరియు లోడ్ చేయబడిన మాడ్యూల్లు ప్రధాన ప్రోగ్రామ్ నుండి భిన్నంగా ప్రవర్తించవచ్చని హెచ్చరిస్తుంది. UDP మరియు ICMP ఈ యంత్రాంగానికి బయట ఉన్నాయి, కాబట్టి వాటిపై ఆధారపడే ఏదైనా తన స్వంత మద్దతు మార్గం అవసరం. DNS proxy_dns సెట్టింగ్ మరియు అప్లికేషన్ స్వంత రిజాల్వర్ ప్రవర్తనను అనుసరిస్తుంది, అంటే ఒక విజయవంతమైన HTTPS అభ్యర్థన పేరు పరిష్కారం గురించి మీకు ఏమీ చెప్పదు. ధృవపత్ర నిర్ధారణను కూడా దాని స్థానంలో ఉంచండి: ప్రాక్సీ ద్వారా సర్వర్ను చేరుకోవడం గుర్తింపు తనిఖీలను ఆఫ్ చేయడానికి కారణం కాదు.
నేరుగా ఫాల్బ్యాక్ అసాధ్యంగా ఉండాలంటే, ట్రాఫిక్ను స్వయంగా నియంత్రించే అమలు సరిహద్దును ఉపయోగించండి, ఉదాహరణకు నెట్వర్క్ నేమ్స్పేస్, ఫైర్వాల్ నియమాలు లేదా VPN, మరియు దాన్ని లైబ్రరీ హుక్ నుండి వేరుగా ఉంచండి. హుక్ అనేది నిర్దిష్ట ప్రోగ్రామ్ కోసం సాంగత్య సాధనం, kill switch కాదు. ప్రోగ్రామ్, ఖచ్చితమైన ఆదేశం, ట్రేస్లో కనిపించిన ప్రాక్సీ పోర్ట్ మరియు DNS దూరం నుండి పరిష్కరించబడిందో లేదో నమోదు చేయండి; ఆ నాలుగు వాస్తవాలే ధృవీకరించిన పరిధికి మరియు ఆశా పరిధికి మధ్య భేదం.