Basically whitebox is category of test design techniques.
Mainly whitebox testing can be done at following level :
1 - Component level
2 - Integration level
3 - System level
Whitebox testing used to measure code coverage , statement coverage , branch coverage and decision coverage.
Precondition to do whitebox testing is tester must have depth knowledge of programming language , internal code of system/website and logic.
Why do White Box Testing? :
1 - Verify all combination of logical conditions and ensure its value like true/false.
2 - Verify all independent paths within a module is exercised at least once.
3 - All loops are optimum and does not doing extra looping and works under specified area.
White Box Testing helps to find bugs like :
1 - Code syntax error
2 - logical errors in code
3 - Dataflow errors
4 - Conditional errors
We say White box testing= structure-based testing and this is because it is testing about internal structure of software/web.
Whitebox tester mostly analyze and modify code and make it standardize. Also applies diff. algorithm to make code optimized. It test real logic.
Mostly QA/Developer uses Junit , cucumber for whitebox testing automation.
More tools you can check here : Whitebox testing tools
For more information and details knowledge , you can refer ISTQB syllabus. It has great info. regarding all testing concept.